Linux單獨普通賬號ssh無法登錄


問題現象:
我是在生產環境中遇到的這個問題,當時使用的系統為SUSE12系統
使用人發現問題第一時間反饋給我排查,經過測試登錄發現系統中存在的超管以及普通賬號只有使用人使用的賬號無法ssh登錄但也不是一直無法登錄,起初認為是使用人自己對帳號進行了相關設置導致,通過排查排除自行設置導致無法登錄現象,繼續通過系統日志定位相關問題發現存在報錯”kernel: cgroup: fork rejected by pids controller in /user.slice/user-1000.slice”和“unable to create new native thread”
現在這個問題原因就很清晰了,對系統線程數限制進行排查

問題原因:
發現cgroup通過/sys/fs/cgroup/pids/user.slice/user-1000.slice/pids.max控制當前登錄用戶(uid為1000)啟動的線程總數

排查:
查看系統支持最大線程數(一般會很大,相當於理論值)
cat /proc/sys/kernel/pid_max
查看當前問題賬號的pid.max線程數限制(發現單獨賬號對線程數限制默認為12288)
cat /sys/fs/cgroup/pids/user.slice/user-1001.slice/pids.max
12288

處理:
對賬號的/sys/fs/cgroup/pids/user.slice/user-1000.slice/pids.max進行調整,從12288調整為65535
至此,問題解決

為了避免之后出再現相關問題,對內核級線程的限制與systemd對線程的限制進行更改如下:
# SLE 12 修改內核級對線程的限制  
vi /etc/sysctl.conf
kernel.pid_max = 65535
kernel.threads-max = 65535
執行sysctl –p 生效
# SLE 12 修改systemd 對線程的限制  
cat /etc/systemd/system/user.slice.d/override.conf
[Slice]
TasksMax=65535
cat /etc/systemd/logind.conf.d/override.conf
[Login]
UserTasksMax=65535

cgroup限制:
有個重要的限制就是最大任務數TasksMax,通過設置cgroup的pids.max來限制。
對於登錄會話,有個默認的限制UserTasksMax,配置在/etc/systemd/logind.conf,限制了某個用戶的默認的總任務數

查看SP4的發行說明:https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP4/index.html,並沒有發現相關限制反而發現這句“Starting with SLE 12 SP4, libcgroup1 has been removed. Migrate to the equivalent functionality in systemd.”
cgroup處理可能與systemd的處理相沖突從 SLE12SP4開始,libcgroup1已被刪除。遷移到 systemd 中的等效功能
所以我們只需要對systemd相關限制進行更改就可以


免責聲明!

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



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