我有一台运行 pgbouncer 服务器和 Open SSH 服务器的机器,以便客户端可以建立到服务器的隧道并连接到数据库。
现在,所有客户端都将连接保持活动状态大约 3 分钟,然后连接将关闭。正如您所看到的,下图显示了运行命令:
ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
多次强调了 sshd 进程数量在短时间内减少的事实。
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
158 158 790
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
150 150 750
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
146 146 730
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
140 140 700
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
140 140 700
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
140 140 700
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
140 140 700
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
136 136 680
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
132 132 660
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
132 132 660
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
132 132 660
sosepe@pgbouncer:~$ netstat -nt | grep :22
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
298 298 1490
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
324 324 1620
但不会持续很长一段时间。
我的意思是,几个小时后再次运行该命令会显示进程数量的实际增加情况。那是因为其中一些从未真正关闭。
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
324 324 1620
几个小时后,结果如下:
sosepe@pgbouncer:~$ ps -o pid,user,%mem,command ax | sort -b -k3 -r | grep -o sshd | wc
1926 1926 9630
这些是后果:
Private + Shared = RAM used Program
4.0 KiB + 22.0 KiB = 26.0 KiB agetty
132.0 KiB + 27.5 KiB = 159.5 KiB vnstatd
128.0 KiB + 45.5 KiB = 173.5 KiB systemd-udevd
136.0 KiB + 65.0 KiB = 201.0 KiB cron
216.0 KiB + 33.0 KiB = 249.0 KiB tail
112.0 KiB + 239.5 KiB = 351.5 KiB systemd-timesyncd
504.0 KiB + 50.0 KiB = 554.0 KiB lvmetad
192.0 KiB + 481.5 KiB = 673.5 KiB vsftpd
908.0 KiB + 92.0 KiB = 1.0 MiB sudo
916.0 KiB + 103.0 KiB = 1.0 MiB pgbouncer
644.0 KiB + 604.0 KiB = 1.2 MiB vmtoolsd
1.3 MiB + 47.0 KiB = 1.3 MiB rsyslogd
1.2 MiB + 247.0 KiB = 1.5 MiB CloudEndure_Age (4)
1.4 MiB + 81.0 KiB = 1.5 MiB dbus-daemon
1.6 MiB + 331.0 KiB = 1.9 MiB su (4)
1.2 MiB + 892.0 KiB = 2.1 MiB VGAuthService
1.7 MiB + 582.0 KiB = 2.2 MiB collectd
2.7 MiB + 268.0 KiB = 3.0 MiB systemd-logind
2.9 MiB + 63.5 KiB = 3.0 MiB bash
4.3 MiB + 231.5 KiB = 4.5 MiB systemd-journald
2.7 MiB + 3.6 MiB = 6.2 MiB php-fpm7.3 (3)
4.8 MiB + 1.8 MiB = 6.6 MiB (sd-pam) (3)
6.5 MiB + 3.3 MiB = 9.8 MiB systemd (4)
5.8 MiB + 4.1 MiB = 9.9 MiB php-fpm7.2 (3)
5.7 MiB + 6.5 MiB = 12.2 MiB php-fpm5.6 (3)
16.1 MiB + 153.0 KiB = 16.3 MiB run_linux_migration_scripts_periodically (2)
17.2 MiB + 166.5 KiB = 17.3 MiB update_onprem_volumes (2)
18.5 MiB + 145.5 KiB = 18.6 MiB tailer (2)
11.8 MiB + 13.1 MiB = 24.9 MiB apache2 (11)
159.3 MiB + 180.0 KiB = 159.5 MiB java
741.6 MiB + 2.1 GiB = 2.8 GiB sshd (4469)
---------------------------------
3.1 GiB
=================================
SSHD 消耗了近 3 GB 内存,这种情况会一直持续到机器重新启动为止。
关于问题可能出在哪里的任何线索吗?
谢谢!
聚苯乙烯
这是conf文件:
Port 10110
Protocol 1,2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation yes
SyslogFacility AUTHPRIV
LogLevel INFO
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
MACs hmac-md5,hmac-sha1,[email protected],hmac-ripemd160
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
[email protected],diffie-hellman-group-exchange-sha256,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521
KexAlgorithms [email protected],diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521
PermitEmptyPasswords no
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
GatewayPorts yes
ClientAliveInterval 600
PermitTunnel yes
MaxSessions 50
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem sftp /usr/libexec/openssh/sftp-server
答案1
在运行 Oracle Linux 和 Oracle 数据库的服务器上有相同的行为,我们注意到 sshd 服务正在消耗所有内存,直到内存耗尽并且服务器需要重新启动。我们怀疑这只是在我们为 Linux 实施 CIS 基准测试时才开始的。在我们的场景中,一旦我们启动 Oracle 数据库实例,sshd 服务就会开始使用内存。目前我们已禁用 sshd 服务,直到找到根本原因。我们已尽力禁用 PAM 进行身份验证,但无济于事。希望有人找到这个问题的原因。