1. 程式人生 > >nginx平滑重啟過程中提示[alert] kill(2942, 1) failed (No such process)問題分析及解決方案

nginx平滑重啟過程中提示[alert] kill(2942, 1) failed (No such process)問題分析及解決方案

場景

當nginx伺服器的配置加入新的模組後,若需要nginx伺服器使用新的配置,就必須平滑重啟nginx伺服器。
平滑重啟過程如下:nginx伺服器接收到重啟訊號時,首先讀取新的配置檔案,如果不存在語法問題,則啟動新的nginx服務,然後平緩的關閉原先的nginx服務程序;反之則提示錯誤並使用原先的nginx服務程序。

原因

  • 產生這種問題的原因是在命令列中直接使用如下命令:
./nginx安裝路徑/nginx/sbin/nginx -s reload

在使用上述命令時,預設將採用”./安裝路徑/nginx/logs/nginx.pid”中所儲存的pid程序號。
- nginx配置檔案併為在nginx安裝路徑中,而是使用其他的路徑,同時在nginx配置檔案中使用瞭如下命令:

pid nginx.pid;

直接使用上述命令時,將會在nginx安裝路徑中新建一個nginx.pid檔案用於儲存啟動的nginx服務程序號,而不是預設的nginx.pid檔案。

小結

基於上述兩個原因,將會在nginx服務平滑重啟過程中提示沒有相關程序。因為重啟時將使用預設nginx.pid中的程序號,而實際啟動的是安裝路徑下新建的nginx.pid中的程序號,導致linux系統將嘗試重啟從未啟動的程序。

解決方案

通過上述的原因分析可知,既然存在兩個方面的異常,因此就可以從兩個方面入手:

解決方案一

這種方案是針對第二個原因實施的,既然pid配置項會引起平滑重啟過程中的異常,因此可以針對pid的設定來解決問題。

#更改nginx配置檔案中的設定
#pid nginx.pid;
pid /nginx安裝路徑/nginx/logs/nginx.pid;

#以下是平滑重啟時的指令
./nginx安裝路徑/nginx/sbin/nginx -s reload

通過更改配置檔案中pid的相關設定,使得nginx程序號儲存於預設的nginx.pid檔案中,而不是重新建立檔案來儲存nginx的程序號;接下來使用的平滑重啟指令將重啟預設nginx.pid中的程序。

解決方案二

這種方案是針對第一個原因實施的,可通過在重啟指令中指明需要使用的新配置檔案,同時新配置檔案將與原配置檔案保持相同的pid設定,也可實現正確的平滑重啟。

#nginx配置檔案中pid的設定(與原配置檔案相同)
pid nginx.pid;

#以下是平滑重啟時的指令
./nginx安裝路徑/nginx/sbin/nginx -s reload -c newpath

通過-c指令指明新配置檔案的路徑,其中newpath是新配置檔案的絕對路徑。此時,平滑重啟將會使用原配置檔案中指定的程序號儲存檔案來實現平滑重啟。

相關推薦

nginx平滑過程提示[alert] kill(2942, 1) failed (No such process)問題分析解決方案

場景 當nginx伺服器的配置加入新的模組後,若需要nginx伺服器使用新的配置,就必須平滑重啟nginx伺服器。 平滑重啟過程如下:nginx伺服器接收到重啟訊號時,首先讀取新的配置檔案,如果不存在語法問題,則啟動新的nginx服務,然後平緩的關閉原先的n

nginx遇到 [alert] kill(25903, 1) failed (3: No such process)錯誤解決方法

當nginx出現如下類似錯誤的時候,不要驚慌,首先看報錯日誌,為什麼報錯,再尋求解決辦法。 nginx: [alert] kill(25903, 1) failed (3: No such process) 通過在nginx/sbin,目錄下 執行命令 ./nginx ,

深入剖析nginx平滑

本文適合對nginx實現原理比較感興趣的同學閱讀,需要具備一定的服務端程式設計知識。 一、背景 在伺服器開發過程中,難免需要重啟服務載入新的程式碼或配置,如果能夠保證server重啟的過程中服務不間斷,那重啟對於業務的影響可以降為0。最近調研了一下nginx平滑重啟,覺得

【學習筆記】啟動Nginx、檢視nginx程序、檢視nginx服務主程序的方式、Nginx服務可接受的訊號、nginx幫助命令、Nginx平滑Nginx伺服器的升級

1.啟動nginx的方式:cd /usr/local/nginxls./nginx -c nginx.conf2.檢視nginx的程序方式:[[email protected] nginx

Nginx平滑

什麼是Nginx的平滑重啟? Nginx 執行新的工作程序並從容關閉舊的工作程序,通知工作程序關閉監聽套接字,但是繼續為當前連線的客戶提供服務。所有的客戶端的服務完成後,舊的工作程序被關閉。如果新的配置檔案應用失敗,Nginx 將繼續使用舊的配置檔案進行工作。

nginx: [alert] kill(11, 1) failed (3: No such process)

在重啟nginx容器後,報錯:nginx: [alert] kill(11, 1) failed (3: No such process) 原因:啟動nginx服務未啟動成功,可以重新啟動啟動nginx服務,或者:重新載入nginx配置。 重新載入nginx配置方法: whe

nginx: [alert] kill(12268, 1) failed (3: No such process)

執行nginx伺服器時,終端下輸入命令ps aux|grep nginx,正確應顯示如下圖:    但是卻沒有顯示中間nobody     3162  0.0  0.1  37228  3548

專案總結3:ionic3開發的App在啟動過程部分手機出現白屏或黑屏問題之終極解決方案

問題場景:採用ionic3開發的App,當專案比較大的時候,會出現部分真機裝置在啟動的過程中有白屏或黑屏的情況。 原因預測:個別手機,尤其是安卓手機的效能比較差,App在啟動後進入首頁或登入頁前的初始化工作還沒有完成。 方案總結:在網上查過很多資料發現大部分的解決辦法都是

HTTP傳送過程中文亂碼、特殊(+號變空格)字元亂碼解決方案

一、字符集亂碼: 原因:       當使用位址列提交查詢引數時,如果不編碼,非英文字元會按照作業系統的字符集進行編碼提交到伺服器,伺服器會按照配置的字符集進行解碼,所以如果兩者不一致就會導致亂碼。 解決方案:       頁面端發出的資料作兩次encodeURI:

DockerGitLab異常/opt/gitlab/embedded/bin/runsvdir-start: No such file or directory(特殊情況)

一、 基本情況 原來在學習gitlab安裝的時候,學習了centos本地安裝和docker安裝,當時本地安裝完成後直接關閉了git

Android多程序appApplication回撥onCreate()方法被執行多次分析解決

最近工作中碰到一個問題,在優化app,使用DDMS檢視Application log過程中看到,app啟動了三個程序,一個主程序,兩個附帶的程序。如下圖可看到一個app啟動的三個程序。  自定義Application回撥方法onCreate()被執行了3次。開始不知是何原因。 相

jsfor迴圈內的匿名函式使用i的問題解決方案

問題描述 js中由於作用域鏈及js執行機制導致的for迴圈中匿名函式使用i的問題 <!--現有html結構程式碼如下--> <ul> <li>VueJs</li> <li>AngularJs<

配置caffe的python環境時make pycaffe提示fatal error: numpy/arrayobject.h No such file or directory解決方法

重灌numpy: sudo pip uninstall numpy sudo pip install numpy 是沒有用的。。。 解決的辦法就是: sudo apt-get install python-numpy (adsbygoogle = window.adsbygoogl

在Android library不能使用switch-case語句訪問資源ID的原因分析解決方案

報錯是因為case分支後面跟的引數必須是常數,也就是說library中的R.java的資源ID不是常數, public static final class animator { public static int design_appbar_state_list_animator = 0x7f020

vue實現ueditor上傳圖片遇到的幾個問題解決方案

vue中實現ueditor上傳圖片功能 遇到的問題 初始化ue元件無法正常顯示,無法載入 單圖上傳的圖示變灰無法點選 or 多圖上傳顯示後端配置項沒有正常載入,上傳外掛不能正常使用! 配置上傳介面

在Activity的onCreate方法顯示PopupWindow導致異常的原因分析解決方案

一、前言        在某些情況下,我們需要一進入Activity就顯示PopupWindow,比如常見的選擇介面。但由於PopupWindow是依附於Activity的,如果Activity沒有建立完成,Activity還沒完全顯示出來就顯示PopupWindow的話,

php平滑nginx,徹底清除WordPress的靜態快取

每一次分享技術文章,都是基於自己的痛點,基於自己的需求。這次也一樣,所以分享具體方法之前,我先說一下我這次的需求與痛點: 一、需求痛點 在部落格集成了程式碼版快取功能之後,為了方便在前臺清理頁面快取,我特意寫了ajax 清理快取的功能(相關文章)。這個功能寫好之後確實可以正常工作。 但是,為了讓

Nginx、php-fpm 和過載配置(平滑

Nginx Nginx程序分為master主程序和worker工作程序。master程序通過訊號通知worker程序執行工作。 命令 sudo nginx -s reload 過載配置(平滑重啟) sudo service nginx resta

Nginx啟用, 停止, 平滑命令

啟動操作 nginx -c /usr/local/nginx/conf/nginx.conf -c引數指定了要載入的nginx配置檔案路徑 停止操作停止操作是通過向nginx程序傳送訊號(什麼是訊號請參閱linux文 章)來進行的步驟1:查詢nginx主程序號ps

Openrestry 平滑(無reload,不nginx

在分散式服務下,我們會用nginx做負載均衡, 業務站點訪問某服務站點的時候, 統一走nginx, 然後nginx根據一定的輪詢策略,將請求路由到後端一臺指定的伺服器上。 這樣的架構是沒有問題的, 但是我們這裡考慮幾個問題: 1) 業務頻繁上下線問題: