查看占用资源最多的
ps auxw|head -1;ps auxw|sort -rn -k4|head -50
查看php进程总数
pstree|grep php-fpm
解决过程:
下面我们通过修改配置文件来优化php-fpm,以达到降低内存使用率的目的。
我的php-fpm配置文件在 …/server/php/etc/ 目录下,进入该目录。
先备份一下原配置文件:
cp php-fpm.conf php-fpm.conf.bak
具体配置参数如下:
pm.max_children = 100改为:pm.max_children = 25
pm.start_servers = 20改为pm.start_servers = 5
pm.min_spare_servers = 5改为pm.min_spare_servers = 2
pm.max_spare_servers = 35改为pm.max_spare_servers = 10
重启服务器:
reboot
重启后可以发现内存使用率相比于之前降低了。
注:
php-fpm.conf中参数作用的说明:
pm.max_children:静态方式下开启的php-fpm进程数量。
pm.start_servers:动态方式下的起始php-fpm进程数量。
pm.min_spare_servers:动态方式下的最小php-fpm进程数。
pm.max_spare_servers:动态方式下的最大php-fpm进程数量。
进行上述设置时,我将php-fpm的执行方式设置成了动态:
pm = dynamic
php-fpm有两种执行方式:
一种是Static静态,另一种是Dynamic动态。如果设置成静态,那么只有 pm.max_children 这个参数起作用。如果设置成动态则有 pm.start_servers 、 pm.min_spare_servers 和 pm.max_spare_servers 这三个参数起作用。设置成动态后,当php-fpm启动时会按照 pm.start_servers 的参数设置启动相应个数的进程,之后php-fpm的进程数量将维持在 pm.min_spare_servers 和 pm.max_spare_servers 指定的个数之间。
查看进程数
ps -ef|grep httpd|wc -l
查看了连接数和当前的连接数,分别是
netstat -ant | grep $ip:80 | wc -l
netstat -ant | grep $ip:80 | grep EST | wc -l
查看httpd使用的模式
`httpd -l `
计算httpd占用内存的平均数:
ps aux|grep -v grep|awk '/httpd/{sum+=$6;n++};END{print sum/n}'
配置最大连接数
vim /etc/httpd/conf/httpd.conf
在最后加上
<IfModule prefork.c>
StartServers 50
MinSpareServers 50
MaxSpareServers 100
ServerLimit 3000
MaxClients 3000
MaxRequestsPerChild 10000
</IfModule>
--------------------------------------------------------------------
<IfModule mpm_prefork_module>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
<IfModule mpm_prefork_module>
StartServers 5 #推荐设置:小=默认 中=20~50 大=50~100
MinSpareServers 5 #推荐设置:与StartServers保持一致
MaxSpareServers 10 #推荐设置:小=20 中=30~80 大=80~120
MaxClients 150 #推荐设置:小=500 中=500~1500 大型=1500~3000
MaxRequestsPerChild 0 #推荐设置:小=10000 中或大=10000~500000
(此外,还需额外设置ServerLimit参数,该参数最好与MaxClients的值保持一致。)
</IfModule>
# StartServers: 数量的服务器进程开始
# MinSpareServers: 最小数量的服务器进程,保存备用
# MaxSpareServers: 最大数量的服务器进程,保存备用
# MaxRequestWorkers: 最大数量的服务器进程允许开始
# MaxConnectionsPerChild: 最大连接数的一个服务器进程服务
说明
* ServerLimit 256 #服务器数量,即进程数的上限,一般配置两个值相同
* MaxClients 256 #这个值比较关键,能同时连接客户端数量的上限
* MaxRequestsPerChild 4000 #这里设置的是,每个进程处理4000个请求,该进程处理完第4000个请求后会自动结束,通过合理配置这个参数,可以避免使用mod_perl和mod_php模块运行的应用程序引起的内存泄露。在会接收到大量请求的大型服务器中,如果这个参数配置的值太小,就就会频繁的重复进行进程的建立和结束。因为基于写时复制的内存共享,共享率会越来越低,最终会导致大部分内存将被持续挤占而不能共享,必须根据实际情况合理设置该值。
##这是工作在work模式下的配置,work模式是多进程和多线程的混合型模式
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
mpm_worker_module
禁止用户直接访问WEB网站中的SVN GIT 文件。因为这是不安全的。
<DirectoryMatch .*\.svn|.git|_svn/.*>
RewriteEngine On
RewriteRule ^(.*)(\.svn|.git|_svn)(/.*)$ /index.php [R=301]
</DirectoryMatch>
- 前言
- 阿里图标库使用
- LAMP环境安装
- 数据库
- MYSQL
- 安装
- Mysql导出导入
- 修改最大连接数
- Mysql慢查寻
- 查看MYSQL占用空间
- 严格模式
- 数据库模式
- mysql权限
- MongoDB
- Redis
- 服务器
- PHP5.4安装
- svnmanager
- linux修改端口22
- 打包忽略文件
- 远程复制文件
- 查看目录大小
- zendloader
- Apache负载
- Memcache
- svn远程同步
- 服务器参数调整
- 内存占满
- PHP调用Java
- Apache重写
- 禁用selinux
- SFTP 子系统申请已拒绝
- Gitlab
- 硬盘挂载
- gitlab修改密码
- oneapm
- SVN安装
- .gitlab-ci.yml
- Nginx重写 html to php
- 添加到环境变量
- supervisor常驻任务
- .gitlab-ci.yml
- crontab.sh
- PEAR
- java jenkins
- Mongo
- 解决unix:///tmp/supervisor.sock no such file的问题
- 登录日志
- tail -f
- git remote
- 开发需知
- Sublime开发工具
- 文档生成工具
- PHP代码注释标准
- http网站自动跳转到https
- PHP只保留错误提示。
- window刷新DNS
- 网站慢
- Centos安全
- 临时代码
- SVNHOOK
- mariadb
- git
- gitlab-runner
- Sublime3设置注释
- Vue开发
- 安装
- v-cloak
- 错误处理
- failed to connect 443
- JavaScriptURL请求乱码
- 内容管理系统
- WordPress
- 支付相关
- 银联
- Angularjs
- 安装环境
- 报错处理
- centos7在upgrade的时候显示:Delta RPMs disabled....详见内容?
- yum-complete-transaction command not find
- hadowsocks
- vpn
- Laravel
- 安装
- ngnix-config
- 使用私有git的composer
- Crontab防止多次执行
- JS
- mui storage
- RTMP