su: cannot set user id: Resource temporarily unavailable

背景:

開發反映使用普通賬號無法登錄服務器

我使用root賬號可以登錄,但在切換普通用戶以及在終端SSH登錄的時候報如下錯誤

[root@localhost ~]# su - dy

su: cannot set user id: Resource temporarily unavailable

ssh [email protected]  報 "Write failed: Broken pipe"問題

分析:

這是什麼問題呢?說實話好長時間沒遇到這種問題了,不知道是什麼原因引起的,立及百度。後來發現跟文件句柄數有關係,同事也說調大文件數就OK了。參考鏈接:http://www.361way.com/resource-ulimit/2611.html

我查看文件句柄數,詳細如下:

[root@localhost ~]# ulimit -a

core file size          (blocks, -c) 0

data seg size           (kbytes, -d) unlimited

scheduling priority             (-e) 0

file size               (blocks, -f) unlimited

pending signals                 (-i) 63710

max locked memory       (kbytes, -l) 64

max memory size         (kbytes, -m) unlimited

open files                      (-n) 102400     

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 10240

cpu time               (seconds, -t) unlimited

max user processes              (-u) 102400

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

沒有問題啊,文件句柄數高達102400個呢。

查看/etc/security/limits.conf文件,詳細如下

*           soft   nofile       102400

*           hard   nofile       102400

*           soft   nproc        102400

*           hard   nproc        102400

沒有問題啊,文件句柄數同樣是102400個,也很大啊。文件句柄數很大啊,怎麼普通用戶還不能登錄,是不是在哪裏有限制啊。

解決方案:

修改下面的文件,把1024調整爲102400

[root@localhost ~]# cat /etc/security/limits.d/90-nproc.conf 

# Default limit for number of user's processes to prevent

# accidental fork bombs.

# See rhbz #432903 for reasoning.


*          soft    nproc     1024

root       soft    nproc     unlimited

總結

    爲什麼會遇到這種非常鎖碎的問題呢?說實話我真的好長時間沒遇到這種問題了,而且覺得這種問題也不應該出現。我目前剛來新公司,發現公司在運維方面還沒形成體系,每購買或創建一臺服務器,都沒有先做系統性的優化。所以,今天這臺調大了,但別的服務器沒有調,那麼一旦出現問題還得調,這樣就耽誤了運維的時間並增加了運維的工作量。像上面的文件句柄數是102400,這個我們運維並沒有做優化,應該是雲服務商自己做的優化,但優化的還不是很到位。所以,公司有一套自己的系統優化方案是很有必要的



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章