Apache相关
实时检测HTTPD连接数:
watch -n 1 -d "pgrep httpd|wc -l"
watch -n 1 -d "netstat -an | grep ESTABLISHED | wc -l" #实时监控信息
查看apache进程数(命令优化:grep -v 是反向查找的意思,比如 grep -v grep 就是查找不含有 grep 字段的行)
ps aux|grep httpd |grep -v grep
ps aux|grep httpd |grep -v grep |wc -l
这里计数结果可以为宝塔面板 Apache管理 中 空闲进程(IdleWorkers)+繁忙进程(BusyWorkers)+1
计算httpd占用内存的平均数:
ps aux|grep -v grep|awk '/httpd/{sum+=$6;n++};END{print sum/n}'
如每个占5M,如系统除去其他应用,剩余2000M,则可以同时又2000/5=400 个进程
案例 5813.58
Apache详解:
内存计算
案例情况
apache 5.6M/个 最大100 5.6*100=560M
PHP 40M/个 最大15 40*15=600M
MYSQL 15%*1880M=283.2M 按300算
共计 1460M
Apache性能设置
配置一
StartServers 5 #apache启动时候默认开始的进程数
MinSpareServers 5 #最小的闲置进程数
MaxSpareServers 10 #最大的闲置进程数
ServerLimit 256 #最大的进程总数(参考,实际看MaxRequestWorkers)
MaxRequestWorkers 256 #最大的进程总数(Apache 2.4版本前为MaxClients)
MaxConnectionsPerChild 4000 #每个进程处理的最多请求数(Apache2.4版本前MaxRequestsPerChild)
在apache2.3.13以前的版本MaxRequestWorkers被称为MaxClients 。本站 2.4
MaxRequestsPerChild这个指令设定一个独立的子进程将能处理的请求数量。
在处理“MaxRequestsPerChild 数字”个请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放,如果再有访问请求,父进程会重新产生子进程进行处理。
如果MaxRequestsPerChild缺省设为0(无限)可以使每个子进程处理更多的请求,不会因为不断终止、启动子进程降低访问效率。
但如果占用了200~300M内存,即使负载下来时占用的内存也不会减少。内存较大的服务器可以设置为0或较大的数字。内存较小的服务器不妨设置成30、50、100,以防内存溢出。原文链接:https://www.cnblogs.com/xiaoleiel/p/8308418.html
配置二
引用自:Apache服务的工作原理
因此,应充分利用Apache的原理特性及工作平台,合理地配置以下参数,在运行时动态调整,以使Apache达到最合理的状态:
MaxKeepAliveRequests 100
# 一次连接可以进行的HTTP请求的最大请求次数(比如客户一次连接中请求几十个页面)。
MinSpareServers 5
MaxSpareServers 10
# Apache预先生成多个空余的子进程驻留系统中,用于处理客户请求。两个参数用于设置最小的空余子进程数量及最多的空闲子进程数量。
StartServers 5
# 设置httpd启动时启动的子进程数量。这个参数应设置为前两个值之间的一个数值。小于或大于前两个数值都没有意义。
MaxRequestWorkers 150
# 服务器支持的最大并发访问的客户数。
# 应根据服务器的物理内存及处理器动态调整。
#Apache 2.4 版本中 MaxClients 改为 MaxRequestWorkers
MaxRequestsPerChild 30
# 每个子进程处理的服务请求次数。超过此值后,子进程副本退出,重新由原始的htttd进程中重新复制一个干净的副本,以提高系统的稳定性。
# 对于静态页面,产生的内存垃圾少,可设置为2000,甚至更高;如服务器载入各种不同的功能模块,产生内存垃圾多,可将此值降低。
# 对于高稳定的系统,如FreeBSD,可设成1000,或更高。
转自:http://blog.tianya.cn/blogger/post_show.asp?BlogID=40003&PostID=4585547
实际案例
PHP相关
查看PHP进程进程数
ps aux|grep php-fpm |grep -v grep
ps aux|grep php-fpm |grep -v grep |wc -l
prefork 下StartServers、MinSpareServers、MaxSpareServers等选项的关系:https://blog.csdn.net/u013831156/article/details/58073436?utm_source=blogxgwz7
获取php-fpm的连接数,此命令是获取到php-fpm程序的总连接数
netstat -napo |grep "php-fpm" | wc -l
1、netstat是输出TCP, UDP以及Unix Socket的信息。
PHP FPM一般是监听TCP或者Unix Socket,用netstat可以查看已通过TCP方式或Unix Socket方式与PHP FPM建立的连接数。
netstat:
-o或–timers:显示计时器;
-n或–numeric 直接使用IP地址,而不通过域名服务器。
-a或–all:显示所有连线中的Socket;
-p或–programs:显示正在使用Socket的程序识别码和程序名称;
2、wc命令:
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
-help 显示帮助信息
–version 显示版本信息
查看当前php-fpm进程平均占用内存情况
ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'
相关文章:
lsof 命令可以展示一个进程打开的所有文件,或者打开一个文件的所有进程。从这个列表中,我们可以找到具体是什么文件被写入,根据文件的大小和/proc中io文件的具体数据
我们可以使用-p <pid>的方式来减少输出,pid是具体的进程
lsof -p 1028