今天,客户反馈后台无法访问,于是开启了排查之路。

问题定位:

使用 df -h 命令查看,硬盘空间充足;

使用 free -m和top命令查看,发现16G的内存,被占用了多达15G;

查看安全防护日志,系统日志,未发现异常。

使用ps -ef|grep java命令查看进程是否存在,发现已经不存在java进程了;

问题大概就是内存占用率过高,导致java程序被kill掉了。

问题解决:

客户采购的机器为阿里云机器,使用lnmp一键安装脚本安装的基础环境,可以通过 ps auxw|head -1;ps auxw|sort -rn -k4|head -50 查看占用内存前50的进程,发现MySQL占用内存过多,php-fpm虽然单个进程占用内存不多,但是肉眼可见的均是php-fpm进程;

1、优化mysql配置

配置文件在 /etc/my.cnf,有如下几个配置可以关注下 innodb_buffer_pool_size、key_buffer_size、max_connections、key_buffer_size,配置文件修改后,需重启MySQL服务

2、优化php-fpm配置

php-fpm的配置文件在/usr/local/php/etc路径下,

配置文件的一些解释:

pm = dynamic
pm.max_children = 30
pm.start_servers = 15
pm.min_spare_servers = 10
pm.max_spare_servers = 20

pm = dynamic:子进程的数量在下面配置的基础上动态设置:pm.max_childrenpm.start_serverspm.min_spare_serverspm.max_spare_servers

max_children:pm 设置为 static 时表示创建的子进程的数量,pm 设置为 dynamic 时表示最大可创建的子进程的数量。必须设置。

start_servers:设置启动时创建的子进程数目。仅在 pm 设置为 dynamic 时使用。默认值:min_spare_servers + (max_spare_servers - min_spare_servers) / 2。

min_spare_servers:设置空闲服务进程的最低数目。仅在 pm 设置为 dynamic 时使用。必须设置。

max_spare_servers:设置空闲服务进程的最大数目。仅在 pm 设置为 dynamic 时使用。必须设置。

php-fpm配置修改后,也需要重启。

重启后使用相关压测工具进行测试,未出现java进程被kill的情况。

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系电话

176-8951-1878

微信
微信
分享本页
返回顶部
西藏巨腾信息技术有限公司提供拉萨网站建设、软件开发、小程序开发、APP开发、网络营销、在线推广、在线商城开发等服务,联系电话: 17689511878