自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 数据库主从搭建及应用数据源切换

数据库主从架构过程,参考https://www.cnblogs.com/cloudhere/p/10991520.html。java关于主从的应用在这里写一下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring...

2020-04-15 19:57:02 369

原创 3.高并发下的系统优化-写操作压测

关于写操作,想了半天感觉和读操作差不多,那么这里就模拟一下秒杀的情景,看下500的数量,抢购时订单多久抢完,排队的情景。在之前配置下:...

2020-04-15 00:47:30 273

原创 2.高并发下的系统优化-动态资源集群读操作压测

接下来进行集群的压测,配置跟单机的一样,一台数据库+redis+mq,两台应用,一台nginx。没有任何优化的情况下:可以看出数据库压力很大,nginx压力很大,而且有很多错误连接优化一下数据库(同单机):tps变高了,访问500也变少了再优化一下tomcat并建立长连接(同单机):可以看到,和单机一样,建立长连接后性能反而下降,后面对这个进行研究。ngxi...

2020-04-13 21:08:07 184

原创 1.高并发下的系统优化-总览+单机压测

关于并发下的优化有很多,接下来总结一下并一一实践测试一下:读操作:首先是单机优化:1.数据库方面:优化语句,避免出现模糊查询、多表逗号等。2.数据库方面:读操作:给数据库加索引,增加查询速度。3.数据库方面:增加数据库socket连接数、增大缓存等。4.容器方面:增加tomcat等待队列长度、线程数等。5.容器方面:与客户端建立长连接接下来转为集群:6.ngin...

2020-04-13 02:18:39 466

原创 linux常用命令

查看防火墙开放的端口号:firewall-cmd --list-ports添加端口:firewall-cmd --zone=public --add-port=80/tcp --permanent关闭端口:firewall-cmd --remove-port=80/tcp --permanent重启防火墙:systemctl reload firewalld...

2020-04-12 18:10:10 171

原创 11.防刷限流

之前我们已经讲了流量削峰,接下来讲下防刷限流。首先我们可以使用比较通用的验证码,包装秒杀令牌前置,需要验证码来错峰。我们可以使用awt来生成图片:public class CodeUtil { private static int width = 90;// 定义图片的width private static int height = 20;// 定义图片的heigh...

2020-04-11 16:18:45 417

原创 10.秒杀削峰泄洪策略

关于削峰技术,常用场景例如秒杀。为什么要流量削峰?之所以叫秒杀,也就是第一秒的时候流量涌入的问题,瞬时流量变大可能对机器造成影响,因此我们需要把第一秒的流量平滑的过度掉,削弱峰值,把流量平滑的过渡到第二秒或者后面,让系统性能有平滑的提升。对于我们现在没有做任何操作的时候,秒杀下单的接口会被脚本不停地刷。秒杀验证逻辑和秒杀下单接口强关联,代码冗余度高。秒杀验证逻辑复杂,对交易系统产生无关联负载。...

2020-04-11 14:45:39 569

原创 9.交易性能优化-事务型消息

之前我们说了一个场景,在交易合法性验证后开始扣减库存,用mq来更改数据库,然后进行订单处理。但是这样有个问题就是,如果之后处理订单的时候出问题了,那么之前mq发的消息撤不回来,数据已经改了,那肯定就有问题了。基于这个情况,我们有一个简单的处理方式,由于我们使用了springboot的事务,他给我们提供了一个事务提交以后执行的接口TransactionSynchronizationManager:...

2020-04-10 16:07:54 319

原创 8.交易方面的优化,redis和rocketmq

我们对于交易进行一下200个线程压测,看下应用服务器的资源:再看下压测结果:接下来用1000个线程看下数据库资源:并且耗时也加大了:那么对于下单我们一般会有几个步骤:1.校验商品是否存在,用户是否合法,购买数量是否正确。2.落单减库存。3.订单入库,加商品销量。4.返回前端。通过上面步骤,其实我们对于数据库至少有6次操作,而且在减数据库的时候是根据id操作,那还...

2020-04-10 00:38:28 1085

原创 7.关于cdn、页面静态化

我们之前一直都在介绍动态请求的加速,接下来讲一下静态请求,也就是cdn。当请求来到服务器上时,如果是访问静态资源,那么就将请求解析到cdn加速域名中,再由cdn(海量的就近加速节点)就近看有没有存静态资源,有的话直接返回,没有的话去指定的http地址中抓取数据返回并缓存起来,下次就可以直接返回了。接下来配置一下,这里用的是阿里云的:在cdn上添加配置,ip就是nginx的ip:...

2020-04-08 12:02:47 2557

原创 6.nginx的共享字典、redis实战简介

首先创建一个lua文件ngx.log(ngx.ERR,"lua sucess");在nginx配置文件中加:启动nginx:也就是说这个脚本会在nginx启动的时候执行。当然,一般用的不多,用的更多的是content_by_lua来指定lua实现什么样的内容,接下来试一下:配置下nginx新建lua脚本:ngx.say("hello static ite...

2020-04-07 16:03:23 405

原创 5.查询性能优化

缓存设计对于缓存设计,有几个原则:用快速存取设备,例如内存将缓存推到离用户最近的地方脏缓存清理,也就是数据库变化后,缓存内的数据也要同步更新多级缓存redis缓存对于redis,不同太多介绍了。这里介绍一下单机版和sentinal哨兵模式和集群cluster模式对于哨兵模式,就是用一个sentinal节点管理redis,sentinal和主从redis有长连接,并发...

2020-04-07 14:33:55 251

原创 4.会话管理

基于cookie传输sessionid:java tomcat容器session实现对于传统实现,我们经常会用cookie来传输session,将登录状态等信息传到request的session中。基于token传输类似sessionid:java代码session实现在移动端或是很多浏览器会禁用cookie,导致通过cookie不奏效,因此出现了基于token的方式。具体实现后面再说...

2020-04-06 17:05:14 112

原创 3.nginx长连接优化

在单机的情况下的压测结果:分布式的压测结果:虽然tps还是比较少,但是还是有提升,主要是因为数据库的服务器的配置是很低的,所以扩展这里其实就更有帮助,这里就不再修改了。而对于nginx和服务之间的连接还是短连接,所以还是有性能消耗,接下来我们把nginx的连接改成长连接:由于数据库服务器配置问题,所以数字上看不出太多变化,如果配置好的机器,变化是非常大的。...

2020-04-03 16:18:40 700

原创 2.nginx分布式扩展

通过单机压测可以看到,吞吐量在200-300之间,对于服务器的数据库也有较大的压力。nginx反向代理负载均衡在单机的情况下,容量总归有上限,对于我们看服务器后台进程情况,有这样一个图:表象上:单机cpu使用率增高,内存占用增加,网络带宽使用增加。cpu us:用户空间的cpu使用情况(用户层代码)cpu sy:内核空间的cpu使用情况(系统调用)load aver...

2020-04-03 15:56:14 330

原创 1.springboot压测调优

通过压测可以找到服务器的上限,ps -ef |grep java找到java的进程号,然后通过pstree -p 12569 | wc -l可以看到当前java的线程数。当我们的压测到达一定数量的时候,请求会报错:这是可以去看下线程数:也就是由于server端并发线程数上不去,导致客户端请求被拒。首先看下spring-configuration-metadata.json文件...

2020-04-02 23:12:34 3057 1

原创 jemeter性能压测部署

性能压测所需工具:jemeter,可在阿帕奇下载。下载后windows下直接bin目录下cmd启动即可。关于jemeter工具,我们还需要知道几点:线程组:jemeter用来压测高并发下系统的表现,因此jemeter提供了一个线程组的工具,可以并发多个线程进行测试。http请求:发送http请求模块,不用多解释。查看结果树:发送请求的结果。聚合报告:性能压测报告。那么如何使...

2020-04-02 21:57:33 296

原创 linux部署java

安装jdk去官网下rpm包,cd到文件夹后运行命令来赋予权限:chmod 777 jdk-8u241-linux-x64.rpm接下来用rpm工具安装java:rpm -ivh jdk-8u241-linux-x64.rpm安装好后可以去usr/java/中查看文件。接下来运行vim ~/.bash_profile配置环境变量,加如图指令安装数据库直接运行yum...

2020-04-02 19:16:45 202

go-ipfs_v0.9.0_linux-amd64.tar.gz

go-ipfs_v0.9.0_linux-amd64.tar.gz

2021-08-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除