我们有一个 Laravel 网站,目前托管在 Digital Ocean (Nginx) 上。Droplet 有 2 个 vCPU、2 GB 内存、60 GB SSD、3 TB 传输,运行 PHP 7.4。我们发现 CPU 使用率每天都在稳步上升。
我们目前有 118 个休眠任务(我对此并不太担心),但是随着时间的推移,出现了几个 php-fpm 命令,有时总 CPU 使用率会飙升到 50-60% 左右。在使用 Digital Ocean 之前,我们已经在另一台服务器上运行过这个网站,CPU 一直处于 95-100% 左右。
以下是服务器上当前运行的占用大量 CPU 的进程的快照。这对于 Laravel 网站来说正常吗?这些 php-fpm 命令真的有必要吗?
top - 11:48:38 up 21 days, 22:46, 1 user, load average: 0.65, 0.75, 0.79
Tasks: 120 total, 2 running, 118 sleeping, 0 stopped, 0 zombie
%Cpu(s): 41.8 us, 21.5 sy, 0.0 ni, 36.4 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
MiB Mem : 1987.6 total, 172.6 free, 291.9 used, 1523.1 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 1475.8 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
222902 www-data 20 0 242664 58356 37272 R 76.4 2.9 0:13.28 php-fpm: pool www
222903 www-data 20 0 242652 57740 37208 S 26.6 2.8 0:01.80 php-fpm: pool www
222901 www-data 20 0 242700 57480 37144 S 21.9 2.8 0:24.67 php-fpm: pool www
11 root 20 0 0 0 0 I 0.3 0.0 5:25.41 [rcu_sched]
167142 www-data 20 0 141972 15920 5384 S 0.3 0.8 29:09.38 nginx: worker process
1 root 20 0 171116 12632 7848 S 0.0 0.6 1:28.61 /sbin/init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.12 [kthreadd]
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 [rcu_gp]
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 [rcu_par_gp]
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 [kworker/0:0H-kblockd]
9 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 [mm_percpu_wq]
10 root 20 0 0 0 0 S 0.0 0.0 1:33.28 [ksoftirqd/0]
笔记:我们目前已在网站上启用 Cloudflare,截至 2 月 27 日,该网站仅对商店所在国家/地区(马耳他)开放。在此之前,Digital Ocean 图表显示 CPU 使用率最多上升至 4.5%。27 日之后,我们向大约 20 多个国家/地区开放了该网站 - 其中一些位于欧盟、澳大利亚和美国,并立即看到 CPU 使用率激增。
我担心的是,随着时间的推移和网站流量的增加,CPU 可能会达到无法恢复的程度,并且(如以前经历的那样)不幸的是网站将无法浏览。
非常感谢任何帮助、提示和建议。
提前致谢 :)
答案1
Laravel 并不是特别轻量级。你需要收集有关系统正在做什么的信息,分析数据并进行适当的更改。
查看您的 Web 服务器访问日志和 laravel 日志作为起点来确定系统上正在发生的活动。
确定事情是否确实存在问题,然后采取行动。
系统资源是用来使用的。您的系统似乎总体上使用率不高。