性能测试 -- 实际例子
1、环境申请搭建,压测机器的申请;
2、压测场景设计和思考;
3、压测脚本的编写和修改;
4、压测开始,调试,开始正式压测;
5、压测结果分析,定位问题,重新压测;
环境:
应用机器,mock机器,memcache机器,数据库服务器,客户端机器(由于公司有性能平台这里就没考虑),涉及到软件的安装,注意环境变量!!
涉及到的修改 应用的需要的环境变量,/etc/hosts文件,
-XX:PermSize=512m
持久代
-Djava.rmi.server.hostname=111.111.111.111 jmx
配置的相关,jmx是java自带的一些扩展,可以用来监控jvm情况
OOM -- Out of Memory,内存溢出,之前碰到这个问题,是由于 PermSize 过小导致的 ,mock服务加载mock模板是服务启动时,把所有的mock模板加载到内存中,
- 数据库参数调整
root@127.0.0.1 : (none) 11:50:32> show variables like 'innodb_buffer_pool_size';
+-------------------------+------------+
| Variable_name | Value |
+-------------------------+------------+
| innodb_buffer_pool_size | 4294967296 |
+-------------------------+------------+
1 row in set (0.00 sec)
由于192.168.xxx.xxx挂载的数据文件磁盘为非SSD磁盘,磁盘IO性能比较差,而目前主机的系统总共内存为189GB。 innodb_buffer_pool_size从4G调整80GB (一般innodb_buffer_pool_size配置为主机内存的70%~80%)。
/etc/my.cnf (修改保存然后重启数据库)
innodb_buffer_pool_size=80G
service mysqld stop #停
service mysqld start #起
mysql -uroot -h127.0.0.1 #检查修改已经生效
root@127.0.0.1 : (none) 12:42:21> show variables like 'innodb_buffer_pool_size';
+-------------------------+-------------+
| Variable_name | Value |
+-------------------------+-------------+
| innodb_buffer_pool_size | 85899345920 |
+-------------------------+-------------+
1 row in set (0.00 sec)
- 系统最大文件句柄数调整为13万:
/etc/security/limits.conf
* soft nofile 130000
* hard nofile 130000
如果系统登录用户默认shell是bash shell,需要使用下面命令实现:
ulimit -n 130000
- hbuilder 开发5+ APP采坑记录
- Spring Cloud如何提供API给客户端
- 5分钟学会Spring Boot自定义属性和自动配置
- 创建一个Spring Security OAuth认证服务
- Zipkin和微服务链路跟踪
- Java8真不用再搞循环了?
- 针对事件驱动架构的Spring Cloud Stream
- Spring的三种Circuit Breaker
- Spring5以来注册Bean的各种姿势,特别最后的纯编码注册值得尝试
- ONOS一键安装脚本
- Spring 5 新增全新的reactive web框架:webflux
- 认证鉴权与API权限控制在微服务架构中的设计与实现(一)
- 在服务器上利用docker快速部署博客—jpress
- NSQ深入与实践
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法