코어 덤프를 수행하도록 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
?
답변1
이것은 나에게 기본값처럼 보입니다. CLI를 사용하여 변경하면 변경 사항이 영구적이지 않습니다. 세션을 다시 시작하면 원래 값으로 복원됩니다.
마찬가지로 proc
변경 사항은 영구적이지 않으며 재부팅하면 재설정됩니다.
답변2
php-fpm 서비스 대신 "ulimit -c 0"을 실행하면 로그인된 쉘의 ulimit가 변경됩니다.
영구적으로 사용하려면 php-fpm 서비스를 시작하는 서비스에 "LimitCORE=infinity"를 추가해야 합니다. 보다시스템 문서자세한 내용은.
이렇게 하려면 "systemctl edit php-rpm.service"(루트로)를 실행해야 하며 다음과 같은 내용을 추가할 수 있는 편집기가 나타납니다.
[Service]
LimitCORE=infinity
(또는 1G와 같은 합리적인 코어 크기 제한을 사용합니다.)
core_pattern을 유지하려면 systemd-coredump 및 abrtd를 비활성화하고 /etc/sysctl.d/의 sysctl 파일을 통해 kernel.core_pattern을 설정해야 합니다.