操作系統資源限制類問題
更新時間 2025-02-05 09:37:34
最近更新時間: 2025-02-05 09:37:34
分享文章
本頁介紹天翼云TeleDB數據庫操作系統資源限制類問題。
進程打開文件數達到上限問題
問題描述
節點運行報錯too many open file。
可能影響
- 應用連接數據庫報錯;
- 執行SQL報錯。
解決步驟
- 檢查數據庫用戶的操作系統參數是否符合預期
執行以下命令,返回值不應少于131072。
ulimit -n
如果少于,則需要檢查/etc/security/limits.conf中以下配置項是否符合預期
*soft nofile 131072
*hard nofile 131072
不符合則需要修改。
- 檢查/etc/security/limits.d/下是否有后綴為.conf的文件,其中是否有上述內容,如果有且不符合預期,則同樣需要修改;
- 重新登錄數據庫用戶,再次執行ulimit -n驗證返回結果是否符合預期,如不符合,重新檢查上述步驟;
- 檢查Agent服務進程和實例節點主進程的limits環境參數是否符合預期
如:
#cat /proc/22319/limits|grep open
Max open files 131072 131072 files
其中22319為進程ID
- 如果第1/3步檢查結果已符合預期,但第4步結果不符,則需要重啟Agent服務和實例節點。
用戶啟動進程數達到上限問題
問題描述
節點運行報錯unable to create new native thread。
可能影響
- 應用連接數據庫報錯;
- 執行SQL報錯。
解決步驟
- 檢查數據庫用戶的操作系統參數是否符合預期。
執行以下命令,返回值不應少于131072。
ulimit -u
如果少于,則需要檢查/etc/security/limits.conf中以下配置項是否符合預期。
*soft nproc 131072
*hard nproc 131072
不符合則需要修改。
- 檢查/etc/security/limits.d/下是否有后綴為.conf的文件,其中是否有上述內容,如果有且不符合預期,則同樣需要修改;
- 重新登錄數據庫用戶,再次執行ulimit -u驗證返回結果是否符合預期,如不符合,重新檢查上述步驟;
- 檢查Agent服務進程和實例節點主進程的limits環境參數是否符合預期。
如:
#cat /proc/22319/limits|grep processes
Max processes 131072 131072 processes
其中22319為進程ID
- 如果第1/3步檢查結果已符合預期,但第4步結果不符,則需要重啟Agent服務和實例節點。
信號量不足問題
問題描述
節點啟動時,報錯信號量不足,報錯信息示例如下:
2024-01-12 16:35:10 CST ??39520FATAL:?could not create semaphores: No space left on device
2024-01-12 16:35:10 CST?? 39520DETAIL:?Failed system call was semget(1978133, 17, 03600).
2024-01-12 16:35:10 CST?? 39520HINT:?This error does not mean that you have run out of disk space.? It occurs when either the system limit forthe maximum number of semaphore sets (SEMMNI), or the system wide maximumnumber of semaphores (SEMMNS), would be
exceeded.? You need to raise the respective kernelparameter.? Alternatively, reducePostgreSQL's
consumption of semaphores by reducing its max_connectionsparameter.
可能影響
節點啟動失敗
解決步驟
- 查看當前信號量資源
#sysctl -a | grep sem
或
#cat /etc/sysctl.conf|grep sem
默認推薦設置為:
kernel.sem = 50100 64128000 50100 1280
其中第2個數字為最大信號量
- 節點的連接數是否符合預期,max_connections是否設置過大,可適當調小調小max_connections。需要在控制臺頁面上修改參數,重啟節點生效。
- 調大可用信號量
調整方法:
修改配置文件
#vi /etc/sysctl.conf
修改kernel.sem值,主要調大其中第2個數字。
配置參數生效
#sysctl -p