mysql存储服务器S:i5,8G,ssd; centos 7 x64; 安装图形化监控工具(监控工具自身也要消耗资源)
jetty应用服务器A:i5,8G,ssd; centos 7 x64; 安装图形化监控工具(监控工具自身也要消耗资源)
局域网内测试机T:i5,8G,ssd
如何获得S和A的极限性能参数,以及S和A配合后的极限性能参数
确保局域网带宽不是瓶颈.
S服务测试方法:
在T上编写python脚本,确保python脚本的执行不是瓶颈. 或用mysql测试工具。
1、只打开mysql连接,不关闭mysql连接,观测S各项测参数(cpu、RAM、网络流量出入、磁盘IO)趋势图。 增加并行数目(注意T上直观的看到的是并发数目,并发数目通常是并行数目的若干倍。T的能力决定了可打达到的最大并行数目),经历的各个阶段预想:正常打开连接,打开连接所消耗时间明显变长(由此可确定mysql维持一个连接所消耗的主要资源是什么),无法打开连接,S死机。
2a、打开mysql连接,select 一个复杂常量表达式,关闭连接。 增加并行数目,经历的各个阶段预想:正常,CPU消耗猛。
2b、将复杂表达式改为执行指定时长的存储过程调用。 增加并行数目,经历的各个阶段预想:正常,CPU消耗猛,S死机。 观察S经历的资源占用变化。
3、构造一个表,只插入。 增加并发数目, 观看S资源占用变化。 由此放大 一条insert 语句所经历的各个阶段的消耗
4、一个表,大小超出8GB,只插入。 观察此时S。
5、一个表,先插入,再查询。 增加并发数,观察。 这是一般电商系统单服务器承受的压力 (放大后得到什么现象?)
6、构造内存表,重新模拟3、4(表大小改为内存一半)、5,观察现象。 得出在无磁盘瓶颈情况下,cpu、ram的极限。
7、内存表,select a from t1 where 非索引字段=‘xx‘, 使用不同大小的的t1表,观测。 观测非索引情况下条件
8、将7的字段改为索引字段,且索引文件放在内存中。观测。
9、内存表,group by 非索引字段,观测。
10、将9改为索引字段,索引文件在内存中。观测。
11、触发器,调高,观测.
12、用户表join订单表join商品表,观测.
13、磁盘表, select id ...where ... 和 select * ...where ..., (注意加变化的条件以抵抗mysql查询缓存) 对比观测. 放大的是同一行记录之间在磁盘上的存储规律.
...待续
jetty部分 spring mvc+freemarker
jetty日志文件配置到内存分区下,设定为32MB后丢弃。防止磁盘先作为瓶颈.
1、 请求控制器中的一个空方法,调高并行,观察A。 此时放大的应该是spring mvc自身、网络带宽、jvm自身的消耗。
2、请求控制器中的一个死循环方法,调高并行,观察A。观察死机时的状况。
3、控制器中存在一个sleep10秒,调高并行,观察A。
4、方法中加入new ArrayList(100),调高并行,观察A.
5、 方法中构造一个引用环状依赖,确保两个对象彼此都不会被垃圾回收线程回收,确保每次泄漏1MB内存,调高并发,观察A.
6、 方法中直接做2/0操作, 调高并发,观察A。 如果能放大,看到的应该是异常在方法调用链条上传播的消耗。
7、将6改为(int)1.0
8、freemarker循环一个1MB的数组, 调高并发, 观察.
mysql jetty结合
1、内存表user大小2GB,执行登录(查询user,md5, 记录session,返回首页内容),调高并行. 观测S、A,谁先死机。若不死机,增加更多个T,每个T调整到接近T死机的并行数目.
2、 1中 若A先死机,改为A1 A2 S ,调高并行直到死机.
3、 1中 若S先死机,则改为A S1 S2, 调高并行直到死机.
4、内存表, 显示一页商品, 下单, 更改订单状态。 调高并发,观测. 这是放大电商下单.
5、将4中商品、订单表大小都改为1/4内存大小
6、操作日志,随机显示某一页。调高并发.
...待续
以上实验 目的是关于 磁盘IO、 计算机(cpu、ram)、多机配合(集群) 的直观掌握
具体步骤 后续添加
本文出自 “12426146” 博客,请务必保留此出处http://12436146.blog.51cto.com/12426146/1884403
如何获得服务器的常见性能参数 mysql性能 jetty性能
原文地址:http://12436146.blog.51cto.com/12426146/1884403