首次发帖询问事情,期望得到回复啊。谢谢。
网站是php做的,php程序里面需要实时的请求大量的第三方api接口。
另外数据库使用的是阿里云深圳地域rds,web服务器是使用的景安的机器(河南郑州地域,带宽50M+),在访客流量一般的情况下,CPU也能到90%+。
php程序方面:因为php会实时请求大量的第三方网站接口,这里95%的api接口都会在2s内完成。
数据库方面:经过第三方性能监控发现,偶尔链接数据库服务器会出现超时情况(直接是30秒都链接不成功),部分时候链接数据库需要5s,大部分时候链接数据库耗时是在0.4s内。。链接成功之后执行sql都是很快的,在0.0X内会完成。-------数据库链接卡慢会导致cpu升高么?这里也是导致进程变成D状态的原因之一吗?
使用ps r -A查看进程,出现大量的D状态进程,我想问下,出现D状态的可能性是哪儿导致的?是公网数据库导致的?还是说php程序里面请求了大量的第三方api接口导致的?还是说机器磁盘IO导致?其他原因?
[root@localhost ~]# ps r -A
PID TTY STAT TIME COMMAND
9143 ? D 23:05 php-fpm: pool www
9166 ? D 23:13 php-fpm: pool www
9265 ? D 23:16 php-fpm: pool www
9280 ? D 23:07 php-fpm: pool www
9327 ? D 23:15 php-fpm: pool www
9350 ? R 23:09 php-fpm: pool www
9386 ? D 23:05 php-fpm: pool www
9410 ? D 23:13 php-fpm: pool www
9428 ? D 23:14 php-fpm: pool www
9461 ? D 23:01 php-fpm: pool www
9563 ? D 23:15 php-fpm: pool www
9578 ? D 23:15 php-fpm: pool www
10275 ? D 20:23 php-fpm: pool www
13041 ? D 6:37 php-fpm: pool www
13183 ? D 5:48 php-fpm: pool www
13206 ? D 5:47 php-fpm: pool www
13389 ? D 5:16 php-fpm: pool www
13476 ? R 5:08 php-fpm: pool www
13544 ? D 4:58 php-fpm: pool www
13562 ? D 4:59 php-fpm: pool www
13595 ? D 4:52 php-fpm: pool www
13603 ? D 4:51 php-fpm: pool www
13623 ? D 4:55 php-fpm: pool www
13655 ? R 4:52 php-fpm: pool www
13727 ? D 4:20 php-fpm: pool www
13752 ? D 4:18 php-fpm: pool www
14497 pts/0 R+ 0:00 ps r -A
然后这个D状态会瞬间的没有了的,不是百度上面说的D状态会一直D着,而是每次ps查,都会有不同的php-fpm进程是D状态的,部分php-fpm是R状态的。
而我另外一个机房的机器(广东惠州地域,带宽20M),跑的程序和环境都差不多,不会是D状态的居多,而是R状态的居多。
备注下:因为觉得自建数据库维护起来比较困难,所以选择了阿里云rds,我在另外一个机房使用同样的公网数据库链接,跑同样的程序,观察CPU消耗是正常的,D状态进程很少会出现。。