인증이 매우 느림(ssh 및 su 사용)

인증이 매우 느림(ssh 및 su 사용)

시간이 지남에 따라 로그인 시도가 점점 느려지는 프로덕션 서버 중 하나에 문제가 있습니다. 약 5일 후에는 속도가 너무 느려져 일부 중요한 프로세스/크론 항목이 제대로 시작되지 않았습니다.

서버 정보:

하드웨어: Dell R720 24GB RAM 2x Intel Xeon E502620 v2 프로세서(하이퍼스레딩 포함 총 24개 코어) 8x 300GB 10K SAS 드라이브

운영 체제: Red Hat Enterprise Linux 6.5

SSH를 통해 로그인하는 데 문제가 있었고 "red herrings"를 조사하는 긴 여정을 시작했습니다. 결국 나는 다음을 수행하는 것조차 오랜 시간이 걸린다는 것을 깨달았습니다.

[someuser#hostname] su -
Password:

위의 "su -" 명령을 실행할 때 상자 자체에서 인증을 시도하는 것이므로 어떤 형태의 SSH도 포함해서는 안 됩니다. 그렇죠?

이 문제는 3주 연속 같은 상자에서 발생했으며, 로컬로 로그인하는 것만으로도 속도가 느리다는 사실을 처음으로 알아차렸습니다(테스트를 추가할 수도 있음).

콘솔을 통해 로그인하면 다음과 같습니다.

hostname login: user
Password:              # I enter the password and hit [enter]

오랜 시간이 흐르고, 그러다가...

[user@hostname ~] $

SSH를 통해 로그인하면 다음과 같습니다(세부 정보 및 localhost 로그인).

[user@hostname ~]$ ssh -v root@localhost
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: Connection established.
debug1: identity file /usr/local/user/.ssh/identity type -1
debug1: identity file /usr/local/user/.ssh/identity-cert type -1
debug1: identity file /usr/local/user/.ssh/id_rsa type -1
debug1: identity file /usr/local/user/.ssh/id_rsa-cert type -1
debug1: identity file /usr/local/user/.ssh/id_dsa type -1
debug1: identity file /usr/local/user/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is 1d:50:5e:a3:e4:63:d6:1d:d8:2c:85:07:95:81:c8:b6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_501' not found

debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_501' not found

debug1: Unspecified GSS failure.  Minor code may provide more information


debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_501' not found

debug1: Next authentication method: publickey
debug1: Trying private key: /usr/local/user/.ssh/identity
debug1: Trying private key: /usr/local/user/.ssh/id_rsa
debug1: Trying private key: /usr/local/user/.ssh/id_dsa
debug1: Next authentication method: password
root@localhost's password:
debug1: Authentication succeeded (password).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.

이때 한참동안 정체되더니 드디어 로그인에 성공했습니다.

어떤 조언이라도 대단히 감사하겠습니다. 이것은 나를 짜증나게 한다.

다음은 dmesg 출력에도 나타납니다. 다양한 프로세스 이름("cifsd"뿐만 아니라)에 대해 반복됩니다.

cifsd: page allocation failure. order:5, mode:0x20
Pid: 12913, comm: cifsd Not tainted 2.6.32-431.el6.x86_64 #1
Call Trace:
 [<ffffffff8112f9e7>] ? __alloc_pages_nodemask+0x757/0x8d0
 [<ffffffff8116e482>] ? kmem_getpages+0x62/0x170
 [<ffffffff8116f09a>] ? fallback_alloc+0x1ba/0x270
 [<ffffffff8116eaef>] ? cache_grow+0x2cf/0x320
 [<ffffffff8116ee19>] ? ____cache_alloc_node+0x99/0x160
 [<ffffffff8116ffe0>] ? kmem_cache_alloc_node_trace+0x90/0x200
 [<ffffffff811701fd>] ? __kmalloc_node+0x4d/0x60
 [<ffffffff8144feca>] ? __alloc_skb+0x7a/0x180
 [<ffffffff81450fe0>] ? skb_copy+0x40/0xb0
 [<ffffffffa014f57c>] ? tg3_start_xmit+0xa8c/0xd80 [tg3]
 [<ffffffff81460354>] ? dev_hard_start_xmit+0x224/0x480
 [<ffffffff8147bd0a>] ? sch_direct_xmit+0x15a/0x1c0
 [<ffffffff81460858>] ? dev_queue_xmit+0x228/0x320
 [<ffffffff8149a0d8>] ? ip_finish_output+0x148/0x310
 [<ffffffff8149a358>] ? ip_output+0xb8/0xc0
 [<ffffffff8105a924>] ? find_busiest_group+0x244/0x9f0
 [<ffffffff81499655>] ? ip_local_out+0x25/0x30
 [<ffffffff81499b30>] ? ip_queue_xmit+0x190/0x420
 [<ffffffff8112ff2f>] ? free_hot_page+0x2f/0x60
 [<ffffffff814aee3e>] ? tcp_transmit_skb+0x40e/0x7b0
 [<ffffffff814b1380>] ? tcp_write_xmit+0x230/0xa90
 [<ffffffff814b1f00>] ? __tcp_push_pending_frames+0x30/0xe0
 [<ffffffff814a9663>] ? tcp_data_snd_check+0x33/0x100
 [<ffffffff814ad261>] ? tcp_rcv_established+0x381/0x7f0
 [<ffffffff8152873a>] ? schedule_timeout+0x19a/0x2e0
 [<ffffffff814b5643>] ? tcp_v4_do_rcv+0x2e3/0x490
 [<ffffffff814a130a>] ? tcp_prequeue_process+0x7a/0xa0
 [<ffffffff814a4a2c>] ? tcp_recvmsg+0xacc/0xe80
 [<ffffffff814c58ca>] ? inet_recvmsg+0x5a/0x90
 [<ffffffff8105a625>] ? select_idle_sibling+0x95/0x150
 [<ffffffff81449ab3>] ? sock_recvmsg+0x133/0x160
 [<ffffffff8109b2a0>] ? autoremove_wake_function+0x0/0x40
 [<ffffffff81059216>] ? enqueue_task+0x66/0x80
 [<ffffffff8105571d>] ? check_preempt_curr+0x6d/0x90
 [<ffffffff81065c5e>] ? try_to_wake_up+0x24e/0x3e0
 [<ffffffff81065e02>] ? default_wake_function+0x12/0x20
 [<ffffffff8109b2b6>] ? autoremove_wake_function+0x16/0x40
 [<ffffffff81449b24>] ? kernel_recvmsg+0x44/0x60
 [<ffffffffa01fd7c9>] ? cifs_readv_from_socket+0x1a9/0x260 [cifs]
 [<ffffffffa020b11d>] ? cifs_add_credits+0x5d/0x70 [cifs]
 [<ffffffffa01fd8a7>] ? cifs_read_from_socket+0x27/0x30 [cifs]
 [<ffffffffa01fda03>] ? cifs_demultiplex_thread+0x153/0xe10 [cifs]
 [<ffffffff81065e02>] ? default_wake_function+0x12/0x20
 [<ffffffffa01fd8b0>] ? cifs_demultiplex_thread+0x0/0xe10 [cifs]
 [<ffffffff8109aef6>] ? kthread+0x96/0xa0
 [<ffffffff8100c20a>] ? child_rip+0xa/0x20
 [<ffffffff8109ae60>] ? kthread+0x0/0xa0
 [<ffffffff8100c200>] ? child_rip+0x0/0x20

답변1

문제를 발견했습니다. (이 게시물에 감사드립니다.https://stackoverflow.com/questions/8413975/10-second-delay-Between-login-and-shell-prompt)

문제는 /etc/profile.d/zzzz-vamilocale.sh 파일에 있습니다. 이 파일은 가상 머신 속성에서 무언가를 읽으려고 시도하다가 멈추게 됩니다. 이 파일을 삭제하면 문제가 해결될 수 있습니다.

이 문제를 디버깅한 방법: 1. 문제 사용자로 로그인합니다. 2. "bash --login --verbose"를 호출합니다. 3. 실행을 중지하는 줄을 찾습니다. 4. /etc/profile.d /의 파일에서 이 줄을 찾습니다.

답변2

느린 인증을 조사하는 일반적인 방법으로 /etc/pam.conf/etc/pam.d/su( /etc/pam.d/sshd등)을 확인하여 로그인 서비스가 수행하는 인증 유형을 확인하십시오. 시스템 로그를 확인하여 기록된 내용이 있는지 확인합니다(인증 당시의 로그 항목을 찾습니다).

귀하의 경우 커널 로그에 문제가 표시됩니다. "페이지 할당 실패" 메시지는 시스템의 가상 메모리가 부족함을 나타냅니다. 일부 프로그램을 종료하거나 스왑 공간을 늘리십시오.

답변3

당신이 얻을 때로그인 후 속도가 느려짐, 기술적으로 무슨 일이 일어나는지 확인해야 합니다.로그인 사이그리고 첫 번째 껍질빠르게.

맞춤 설정쉘은 많은 일을 할 수 있다창의적인 것괜찮아비참하게 실패했다
실제로 대화형 모드로 들어가기 전에 로그인하거나
DISPLAY가 정의되지 않은 경우 와 같은 특정 특수 조건에서 .

이 경우 우리는 차단하는 항목을 찾고타임아웃, 또는 할느린사물 -
예를 들어만화 스타일의 자동 설치
모든 현재 및 과거 직원의 모든 홈 디렉토리.
당신 자신을 제외하고, 틀림없이.
그 것은 이미 설치되어 있습니다.

나쁘게 들리나요?
아니요. 대부분의 사람들에게는 찾기 쉽고 재미있습니다.

로그인 후 셸이 나타날 때까지의 시간은 유지 관리 작업으로 인해 속도가 느려질 수 있습니다. 그러나 유지 관리 작업은 가끔씩만 실행됩니다. 물론 매주 월요일 8시 이후 처음 로그인할 때와 같이 동시에 실행되지는 않습니다. 속도가 느리기 때문입니다. 그렇죠?

예상치 못한 일들이 많이 일어날 것이다

주목해야 할 점은 로그인 후 쉘이 나타나기 전에 많은 일이 발생할 수 있다는 것입니다.

Ubuntu에서 느린 로그인으로 인해 제가 발견한 문제 중 하나는 오늘의 메시지인 motd를 생성하는 것입니다.

로그인할 때 첫 번째 쉘 프롬프트 앞에 표시되는 텍스트입니다.
비어 있을 수도 있고 간단한 인사말일 수도 있습니다.

보세요ls -l /etc/update-motd.d

$ ls -l /etc/update-motd.d
total 28
-rwxr-xr-x 1 root root 1220 Jul  3  2012 00-header
-rwxr-xr-x 1 root root 1358 Jul  3  2012 10-help-text
-rwxr-xr-x 1 root root  149 Mar 19  2012 90-updates-available
-rwxr-xr-x 1 root root  147 Aug  8  2012 91-release-upgrade
-rwxr-xr-x 1 root root  142 Mar 19  2012 98-fsck-at-reboot
-rwxr-xr-x 1 root root  144 Mar 19  2012 98-reboot-required
-rwxr-xr-x 1 root root 1158 Jul  3  2012 99-footer

특히 90-updates-available이 예에서는 때때로 속도가 매우 느린 것 같습니다. 따라서 거기에서 찾은 내용을 확인하고 로 이동할 수도 있습니다 /etc/update-motd.d.disabled.

답변4

SElinux가 강제 모드에 있는지 확인하세요.

만약에 상태현재 모드를 표시합니다.강제 모드 "꺼짐"으로강도를 0으로 설정"

관련 정보