VPS is locked」的報錯現象

2022-02-03 17:51:43 字數 1945 閱讀 3965

解決方案

在vps啟動、停止、備份、恢復等幾個典型的操作過程中,都會先把vps鎖定

當vps處於鎖定狀態的時候,vps是不能被其他程式操作的

以免其他操作和當前操作衝突

當操作完成後,鎖定就會自動解除

例如,當vps執行中時候,可以做備份操作;當vps停止時候,也可以做備份操作

但是,當vps處於鎖定狀態下,是不能做備份等操作

vps的鎖定是在必要的情況下的一種安全保護

以啟動和停止為例,如果在啟動過程中,遇到乙個程式卡住鎖死,無法正常啟動也無法正常退出

則可能造成整個vps被卡住了

對於vps自身而言,由於內部的某個程式卡住,vps無法跳過這一步驟,就自身無法順利啟動

對於virtuozzo節點而言,由於啟動沒完成,vps還是鎖定中的,其他程式不能對vps進行其他操作

這時候,就發生了「vps is locked」的報錯現象

要解決這個問題,需要登入到硬體節點,找到是哪個程式卡住了vps,將出錯的程序殺掉

這樣,vps即可繼續完成啟動、停止等操作

如果不殺掉出錯的程序,理論上,只要等待足夠長的時間,讓有問題的程序發生了超時(timeout)

則vps自己就會退出鎖定狀態,恢復到正常狀態

但是很多情況下等候幾十分鐘也未必能恢復正常狀態,所以還是以手工中止程序為上。

例如伺服器上報告vps101被鎖定,那麼登入到硬體節點

用vzlist -a 命令檢查當前的vps列表和程序,得到如下結果:

c:\>vzlist -a

veid nproc status ip_addr hostname

1 24 running 192.168.1.1 vps1

101 2 stopped 192.168.1.2 vps23

102 35 running 192.168.1.3 pleskwin761

c:\>

可看到編號為101的vps的「nproc」數字為2,即「number of processes」,當前執行的程序數為2

一般來講,如果vps是停止狀態,這個數字應該為0;如果vps是執行狀態,這個數字應該是20以上

只有兩個程序,則說明vps啟動的過程中可能發生錯誤被卡住了,才導致了vps被鎖定的報錯。

執行vzquery v2s命令,調查有問題的vps的session id。

例如對於vps id為101的vps,執行

c:\>vzquery v2s 101

vps id: 101

session id: 2 (root)

session id: 2

c:\>

由此可以得到,凡是session id(會話id為2)的程序,都屬於vps101。

現在登入到硬體節點,開啟任務管理器,把所有會話id都是2的程序給殺掉,即可解決問題。

預設情況下,任務管理器可能無法列出會話id這個專案,此時可以點選任務管理器上的選單「檢視」

點選「選擇列」,此時會開啟乙個選項清單,左側倒數第二項,即可看到「會話id」。

選中會話id點選確定,任務管理器中就能列出每個程序的會話id了

用滑鼠點選會話id的標題欄,則可以按照會話id數字的大小,進行排序

現在即可列出所有會話id是2的程序了

在列出的會話id是2的程序裡邊,有些的執行者是system,有些是非system

通常來講,只要把所有身份非system的程序都殺掉,vps就可以恢復到正常狀態。

如果vps是在啟動過程中卡住成為鎖定狀態的,殺掉有問題的程序後

則使用vzlist -a命令可以看到vps內啟動的程序數量(npoc)越來越多

並變成了running狀態

如果vps是在停止過程中卡住成為鎖定狀態的,殺掉有問題的程序後

則使用vzlist -a命令可以看到vps應該順利停止,程序數量(npoc)顯示為0

vps成功的停止掉了

當vps解除了鎖定狀態,就可以對其做任何一種操作了

現學現記的知識

引用 linux 中特殊符號用法詳解 與 反引號 在 bash shell 中,與 反引號 都是用來做命令替換用 command substitution 的。所謂的命令替換與我們第五章學過的變數替換差不多,都是用來重組命令列 完成引號裡的命令列,然後將其結果替換出來,再重組命令列。例如 code ...

各種http報錯的報錯的狀態碼的分析

當我們從客戶端向伺服器傳送請求時 伺服器向我們返回狀態碼 狀態碼就是告訴我們伺服器響應的狀態 通過它,我們就可以知道當前請求是成功了還是出現了什麼問題 狀態碼是由3位數字和原因短語組成的 比如最常見的 200 ok 其中第一位數字表示響應類別,響應類別從1到5分為五種 add 其實我查閱資料發現還有...

mysql 刪除使用者報錯 刪除使用者報錯的解決方法

刪除使用者報錯的解決方法 1 報錯現象 root jiarh 02 userdel test r userdel user test is currently used by process 6084 2 解決方法 root jiarh 02 vipw 找到之前建立的使用者名稱,dd刪除那行,儲存退...