Centos
Centos7 的推薦 ulimit 值
嘗試配置 PHP 以執行核心轉儲,我執行了以下操作:
[root@myserver ~]# echo '/tmp/core-%e.%p' > /proc/sys/kernel/core_pattern [root@myserver ~]# echo 0 > /proc/sys/kernel/core_uses_pid [root@myserver ~]# ulimit -c unlimited
我不知道原來的 ulimit 值是什麼,但它們現在如下:
[michael@myserver ~]$ ulimit unlimited [michael@myserver ~]$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 7867 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 4096 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited [michael@myserver ~]$
我還對 php-fpm 配置文件進行了一些更改,但已經將它們改回了預設設置。
我正在執行 Centos7。我應該將 ulimit 值設置回什麼?另外,我應該做些什麼來反轉這兩個
echo
命令嗎?
這看起來像是我的預設值。如果您使用 CLI 更改它們,則更改不是永久性的。您可以重新啟動會話,它們將恢復為原始值。
同樣,
proc
變化也不是永久性的;重新啟動將重置它們。
如果您執行“ulimit -c 0”而不是 php-fpm 服務,您正在更改您登錄的 shell 的 ulimit。
如果您希望它是永久的,您需要將“LimitCORE=infinity”添加到啟動 php-fpm 服務的服務中。有關更多詳細資訊,請參閱systemd 文件。
為此,您將(以 root 身份)執行“systemctl edit php-rpm.service”,然後會出現一個編輯器,您可以在其中添加如下內容:
[Service] LimitCORE=infinity
(或使用合理的核心尺寸限制,如 1G)
要保留 core_pattern,您需要禁用 systemd-coredump 和 abrtd,並通過 /etc/sysctl.d/ 中的 sysctl 文件設置 kernel.core_pattern。