获取服务器性能CPU、内存、硬盘等使用率 get_used_status.php
<?php
include("conn.php")
$obj_MyConnect = new MyConnect()
$obj_MyConnect ->connect(DB_SERVER,DB_USER,DB_PWD,DB_NMAE)
function get_used_status(){
$fp = popen('top -b -n 2 | grep -E "^(Cpu|Mem|Tasks)"',"r")//获取某一时刻系统cpu和内存使陵敬用情况
$rs = ""
while(!feof($fp)){
$rs .= fread($fp,1024)
}
pclose($fp)
$sys_info = explode("\n",$rs)
$tast_info = explode(","扮汪宴,$sys_info[3])//进程 数组
$cpu_info = explode(",",$sys_info[4]) //CPU占有量 数组
$mem_info = explode(",",$sys_info[5])//内存占有量 数组
//正在运行的进程数
$tast_running = trim(trim($tast_info[1],'running'))
//CPU占有量
$cpu_usage = trim(trim($cpu_info[0],'Cpu(s): '),'%us') //百分比厅银
//内存占有量
$mem_total = trim(trim($mem_info[0],'Mem: '),'k total')
$mem_used = trim($mem_info[1],'k used')
$mem_usage = round(100*intval($mem_used)/intval($mem_total),2) //百分比
$fp = popen('df -lh | grep -E "^(/)"',"r")
$rs = fread($fp,1024)
pclose($fp)
$rs = preg_replace("/\s{2,}/",' ',$rs) //把多个空格换成 “_”
$hd = explode(" ",$rs)
$hd_avail = trim($hd[3],'G')//磁盘可用空间大小 单位G
$hd_usage = trim($hd[4],'%')//挂载点 百分比
//print_r($hd)
//检测时间
$fp = popen("date +"%Y-%m-%d %H:%M"","r")
$rs = fread($fp,1024)
pclose($fp)
$detection_time = trim($rs)
location = /nginx_status {stub_status on
access_log off
allow 127.0.0.1
deny all
}
curl http://127.0.0.1/nginx_status
输出样例:
Active connections: 3
server accepts handled requests
17737 17737 49770
Reading: 0 Writing: 1 Waiting: 2
各项解释:
Active connections: 当前 Nginx 正处理的活动腊信连接数.
server accepts handled requests: 总共处理了 17737 个连接, 成功创建 17737 次握手(证明中间没有失败的), 总共处余局手理了 49770 个请求.
Reading: Nginx 读取到客户端的 Header 信息数.
Writing: Nginx 返回给客户端的 Header 信息数.
Waiting: 开启 keep-alive 的情况下, 这个值等于 Active - (Reading + Writing), 意思就是 Nginx 已经处理完正在等候下竖嫌一次请求指令的驻留连接.
一、CPU使用率其实就是运行的程序占用的CPU资源,表示你的机器在某个时间点的运行滚虚清程序的情况。使用率越高,说明机器在这个时间上运行了很多程序,反之较少。使用率的高低与你的CPU强弱有直接关系。而且CPU和内存占用是跟你的脚本挂钩的。 誉岁脚本复杂,占用的就多。
二、步骤
方法一:
【1】首先你需要用压测工具(比如webbench)持续模拟请求, 在压测期间每秒运行ps aux |grep php-fpm一次,把结果记录在文件中。
【2】等压测结束后,可以通大前过分析统计这个文件(结果第三列是cpu占用,第四列是内存占用),然后就可以绘制出php-fpm进程的cpu,内存占用了。
方法二:
如果在某一型号的设备上进行过测试,现在需要规划下一次测试任务需要的CPU资源;或者在同一型号的设备上,对比不同应用类型、同一应用不同版本之间的差异,可以采用简单估算。
1. 计算方法
CPU个数x利用率/吞吐量=CPU个数x利用率/(交易笔数/秒)=CPU个数x利用率x秒/交易笔数=每笔交易消耗的CPU持续了一秒钟。
2. 举例说明
假设某应用在一台8核服务器上运行,当每秒处理100笔交易的情况下,CPU利用率为70%。此时CPU个数x利用率=5.6。
每笔交易消耗一秒钟CPU的个数=5.6/100=0.056。
假设下次测试需要测试吞吐量为每秒200笔交易,大约要求CPU利用率在50%左右。则需要给测试服务器大约的CPU个数为:0.056x200/0.5=22.4。至于这个22.4C的服务器能不能达到每秒200笔交易的能力,是另一回事。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)