Nginx進程不產生core文件問題


  最近工作中遇到Nginx進程異常重啟卻沒有產生core文件問題,經過排除發現問題所在,下面是這個問題的兩個原因。

開啟生成core文件功能

  linux系統下默認是不產生core文件的,需要在進程崩潰時產生core文件要確保開啟了此功能,使用命令 ulimit -c 查看,如果顯示 0 就是沒有開啟,使用命令 ulimit -c unlimited 開啟即可。

寫入權限

  生成core文件是需要數據寫入的,因此進程要對存放 core 文件的目錄擁有寫入權限。

  一般情況下,master 進程的屬主是 root,而 worker 進程的屬主是 nobody,如下所示:

[root@nginx-test ~]# ps -ef | grep nginx
root      74941      1  0 Sep10 ?        00:00:00 nginx: master process sbin/nginx
nobody    74943  74941  0 Sep10 ?        00:10:35 nginx: worker process
nobody    74944  74941  0 Sep10 ?        00:10:03 nginx: worker process
nobody    74945  74941  0 Sep10 ?        00:11:28 nginx: worker process
nobody    74946  74941  0 Sep10 ?        00:10:40 nginx: worker process
nobody    74947  74941  0 Sep10 ?        00:12:36 nginx: worker process
nobody    74948  74941  0 Sep10 ?        00:35:50 nginx: worker process
nobody    74949  74941  0 Sep10 ?        00:17:29 nginx: worker process
nobody    74950  74941  0 Sep10 ?        00:15:01 nginx: worker process

  默認情況下,nginx進程的core文件位置就是nginx服務的部署目錄,而這個目錄的屬主和屬組都不會是nobody的,因此core是無法寫入的。

 

  我遇到的就是這第二種情況,修改方案如下:

  1. 在配置文件 conf/nginx.conf 中增加兩行配置:

worker_rlimit_core 500m;      //core文件大小限制
working_directory core_files;   //core文件目錄

  2. 在nginx部署目錄下創建一個core文件存放目錄(core_files),修改其屬主和屬組為nobody,確保有w權限即可,如下:

drwxr-xr-x.  2 nobody nobody 4.0K Sep 24 21:18 core_files

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM