centos系统,nginx+php环境,CPU消耗过高,出现较多D状态进程怎么办?

新手上路,请多包涵

首次发帖询问事情,期望得到回复啊。谢谢。

网站是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状态进程很少会出现。。

阅读 2.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题