背景:

开发反映使用普通账号无法登录服务器

我使用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,这个我们运维并没有做优化,应该是云服务商自己做的优化,但优化的还不是很到位。所以,公司有一套自己的系统优化方案是很有必要的