周梦康 发表于 2021-11-17 38 次浏览

今天早上在车上收到报警,是一个已经静默下线的应用,不是那么慌,到公司看了下。
负载到了150,CPU 100% 配置比较差,是共享型 ECS
top 看看具体怎么回事,看了下每个 php-fpm 进程都是 2.2% ~ 3.3% CPU

PID   USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND  
13542 admin     20   0  237m  17m 5540 R  3.3  0.2   0:23.34 php-fpm
13547 admin     20   0  236m  16m 5300 R  3.3  0.2   0:23.38 php-fpm
17826 admin     20   0  237m  18m 5504 R  3.3  0.2   0:14.53 php-fpm
19180 admin     20   0  239m  19m 5748 R  3.3  0.2   0:11.58 php-fpm
23442 admin     20   0  240m  19m 5204 R  3.3  0.2   0:02.85 php-fpm
23449 admin     20   0  236m  16m 5236 R  3.3  0.2   0:02.86 php-fpm 
13543 admin     20   0  238m  19m 5748 R  2.2  0.2   0:23.49 php-fpm
13544 admin     20   0  237m  18m 5520 R  2.2  0.2   0:23.44 php-fpm
13546 admin     20   0  235m  15m 5516 R  2.2  0.2   0:23.32 php-fpm
16191 admin     20   0  240m  20m 5268 R  2.2  0.3   0:17.93 php-fpm
16195 admin     20   0  239m  19m 5272 R  2.2  0.2   0:18.14 php-fpm

调用频率高接口我之前处理过,输出的空(已经不用了),所以请求进来,类似于项目框架的空跑,但是还是负载高,strace 统计下,发下主要耗时还是在框架加载到内存。

$strace -c -p 17857
Process 17857 attached - interrupt to quit
^CProcess 17857 detached
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 36.33    0.009670           2      4121           munmap
 15.02    0.003999          65        62           accept
  9.42    0.002506           1      2523      1603 access
  8.18    0.002178           1      4125           open
open("/xxx/vendor/philipp15b/php-i18n/i18n.class.php", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0664, st_size=10263, ...}) = 0
fstat(4, {st_mode=S_IFREG|0664, st_size=10263, ...}) = 0
fstat(4, {st_mode=S_IFREG|0664, st_size=10263, ...}) = 0
mmap(NULL, 10263, PROT_READ, MAP_SHARED, 4, 0) = 0x7fb7b7c1f000
munmap(0x7fb7b7c1f000, 10263)           = 0
close(4)                                = 0

PHP 有随时都支持热更新的便利,但是也导致了这个性能比较低的问题,所以针对这个已经下线的接口那就 nginx 层处理下吧。

👇 下面是我的公众号,高质量的博文我会第一时间同步到公众号,给个关注吧!

评论列表