我在 redhat 上运行着 32gb 的内存。我使用这个服务器专门查询数据库中的列表,并使用 cron 中的 php 来处理它们。
# free -m
total used free shared buff/cache available
Mem: 32261 31401 281 289 579 237
Swap: 10215 10154 61
以下是我的 php 配置
# cat /opt/SP/php7/etc/php.ini
[PHP]
max_input_vars = 5000
session.save_path="/var/SP/prod/shared/lib/session"
[HIDE_PHP_VERSION]
expose_php = Off
[EXTENSIONS]
extension_dir="/opt/SP/php7/lib/php/extensions/no-debug-non-zts-20180731"
[ERROR_HANDLING_AND_LOGGING]
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
[RESOURCE_LIMITS]
memory_limit = 512M
post_max_size = 32M
[MODULES]
extension=oci8.so
[LANGUAGE_OPTIONS]
ignore_user_abort = On
[FILE_UPLOADS]
max_file_uploads = 1
upload_max_filesize = 24M
[COOKIES]
session.cookie_secure = True
session.gc-probability = 0
[LOGGING]
error_log = syslog
[cURL]
curl.cainfo="/opt/SP/php7/etc/cacert.pem"
# cat /opt/SP/php7/etc/php-fpm.conf
;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration ;
;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;
; Global Options ;
;;;;;;;;;;;;;;;;;;
[global]
;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;
error_log = /opt/SP/php7/var/log/php-fpm.log
include = /opt/SP/php7/etc/php-fpm.d/*.conf
# cat /opt/SP/php7/etc/php-fpm.d/php-fpm.conf
[www]
user = wwwrun
group = www
listen = 127.0.0.1:9000
pm = static
pm.max_children = 400
pm.start_servers = 15
pm.min_spare_servers = 10
pm.max_spare_servers = 20
pm.status_path = /status/php-fpm
top - 12:09:12 up 48 days, 1:27, 1 user, load average: 2.26, 1.41, 1.19
Tasks: 644 total, 2 running, 642 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.7 us, 1.4 sy, 0.0 ni, 96.7 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
KiB Mem : 33036044 total, 237356 free, 32216980 used, 581708 buff/cache
KiB Swap: 10461180 total, 59972 free, 10401208 used. 172100 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
48644 wwwadm 20 0 1007168 433440 1592 S 0.0 1.3 5:20.89 php
48653 wwwadm 20 0 973568 421420 2948 S 0.0 1.3 4:33.10 php
21179 wwwadm 20 0 952396 419352 2960 S 1.0 1.3 2:43.65 php
43888 wwwadm 20 0 959004 417176 1756 S 0.0 1.3 4:09.42 php
43788 wwwadm 20 0 1009516 414936 1820 S 0.0 1.3 6:07.42 php
8836 wwwadm 20 0 960720 407296 4880 S 0.0 1.2 1:44.64 php
43928 wwwadm 20 0 936784 401724 6960 S 0.0 1.2 3:22.17 php
21160 wwwadm 20 0 930060 393212 2480 S 0.0 1.2 2:39.77 php
44959 wwwadm 20 0 964984 380596 1760 S 0.0 1.2 5:00.72 php
47859 wwwadm 20 0 919456 372392 2360 S 0.0 1.1 5:38.07 php
8656 wwwadm 20 0 871112 370204 7144 S 0.0 1.1 1:36.08 php
43098 wwwadm 20 0 949720 369700 1788 S 0.0 1.1 6:59.59 php
8842 wwwadm 20 0 870328 365104 4948 S 0.0 1.1 1:35.45 php
8814 wwwadm 20 0 871108 364364 5240 S 0.0 1.1 1:40.37 php
47038 wwwadm 20 0 909032 361924 1660 S 0.0 1.1 6:23.22 php
45017 wwwadm 20 0 922280 356532 1816 S 0.0 1.1 3:47.43 php
49368 wwwadm 20 0 985144 351912 1792 S 0.0 1.1 3:41.05 php
45115 wwwadm 20 0 947448 346696 1704 S 0.0 1.0 3:37.00 php
48681 wwwadm 20 0 917968 343176 1752 S 0.0 1.0 4:08.51 php
46955 wwwadm 20 0 891980 341460 1672 S 0.0 1.0 4:47.66 php
46983 wwwadm 20 0 887288 341388 1728 S 0.0 1.0 3:35.27 php
47919 wwwadm 20 0 879076 338164 1660 S 0.0 1.0 4:02.88 php
49387 wwwadm 20 0 877652 336528 1628 S 0.0 1.0 3:37.26 php
43155 wwwadm 20 0 877488 334720 2088 S 0.0 1.0 9:51.60 php
48692 wwwadm 20 0 849656 323388 1588 S 0.0 1.0 3:45.80 php
49397 wwwadm 20 0 968240 318980 1648 S 0.0 1.0 9:13.06 php
44019 wwwadm 20 0 964316 317212 2284 S 0.0 1.0 3:48.66 php
44929 wwwadm 20 0 900132 314892 1656 S 0.0 1.0 3:43.12 php
43925 wwwadm 20 0 844208 307964 4244 S 0.0 0.9 4:16.07 php
47878 wwwadm 20 0 829616 307512 1568 S 0.0 0.9 3:48.02 php
15854 wwwadm 20 0 768504 303412 2316 S 0.0 0.9 0:39.82 php
15899 wwwadm 20 0 769224 303280 2168 S 0.0 0.9 0:41.05 php
42989 wwwadm 20 0 863108 302040 2480 S 0.0 0.9 16:49.68 php
43948 wwwadm 20 0 913744 292900 1924 S 0.0 0.9 3:57.97 php
36520 wwwadm 20 0 809812 291736 4988 S 0.0 0.9 4:08.14 php
36385 wwwadm 20 0 849400 291388 2140 S 0.0 0.9 3:07.14 php
49378 wwwadm 20 0 866720 288552 1720 S 0.0 0.9 11:54.63 php
49426 wwwadm 20 0 915296 284500 1840 S 0.0 0.9 9:12.31 php
46012 wwwadm 20 0 989008 283204 2020 S 0.3 0.9 3:13.75 php
47897 wwwadm 20 0 859716 281960 1600 S 0.0 0.9 3:29.92 php
36529 wwwadm 20 0 911704 281936 4988 S 0.0 0.9 2:59.11 php
48672 wwwadm 20 0 782348 280448 2644 S 1.3 0.8 5:22.95 php
48528 wwwadm 20 0 896124 277804 1780 S 0.0 0.8 3:38.22 php
21141 wwwadm 20 0 777600 277184 1780 S 0.0 0.8 2:19.44 php
答案1
你可以做几件事:
- 优化代码,使其不占用太多内存
- 并行运行较少的实例
- 尝试使用 swappiness=1(有关更多信息,您可以检查这个答案)
答案2
我正在使用此服务器专门用于查询数据库中的列表......
你能做些什么来提高它的性能吗?询问或加工应用于结果集?
... 使用 php 处理它们来自 cron...
由于你正在使用 cron,我假设你正在调用此过程定期可能是
因为第一个实例运行时间“太长”,而第二个实例正在启动,而第一个实例正在运行仍然跑步,这取决于他们正在做什么,这将使两个都跑得更慢。
然后第三实例启动...等等...
答案3
我会将 pm.max_children 设置在 70-75 之间。您有 32GB RAM。我会为操作系统(例如文件系统缓存)和 Web 服务器(例如 apache、nginx..)保留 2-4GB。其余的我会用于 php。PHP 似乎每个实例使用大约 400MB 的物理内存(其中一些是共享的,因此您应该更多地关注 pss,而不是 rss,但为了简化,我们将使用 rss)。
(32000-2000)/400=75
(32000-4000)/400=70