내 데비안 서버가 왜 충돌했나요?

내 데비안 서버가 왜 충돌했나요?

어젯밤에 새로운 데비안 서버를 설치했습니다. 저는 호스트에서 debian-7.0-amd64-minimal이라는 이미지를 사용했습니다. 방금 apache2, mysql, php, vim, lynx를 설치하고 일부 웹 페이지를 구성했습니다. 그 후 crontab을 구성했습니다(10분마다 실행). 이전에도 비슷한 문제가 있었습니다(재설치하면 문제가 해결될 수도 있다고 생각했습니다).

몇 시간 후, 서버가 이상하게 다운되었습니다. 웹 서버에 액세스할 수 없고 컴퓨터에 SSH로 접속할 수 없지만 어떻게든 여전히 실행됩니다. 내 호스트의 웹 인터페이스에서 컴퓨터가 실행 중임을 확인할 수 있습니다. 그래도 어떤 서비스에도 액세스할 수 없었기 때문에 (호스팅 공급자가 제공한 웹 인터페이스를 통해) 서비스를 다시 시작해야 했습니다.

재부팅 후에는 항상 /var/log에서 관련 타임스탬프가 있는 로그가 있는지 확인합니다. 그런데 가끔 오류가 딱 하나 있었어요

[Fri Mar 28 12:40:17 2014] [error] [client x.x.x.x] PHP Warning:  file_get_contents(http://www.bloomberg.com/quote/DAX:IND): failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known

이는 crontab을 통해 호출된 PHP 스크립트(lynx를 사용하여 웹페이지 호출)로 인해 발생합니다. DNS 서버는 google 8.8.8.8의 서버입니다. 그러나 이는 가끔 발생하며 일반적으로 서비스는 이후에도 계속 작동합니다. 그렇기 때문에 다른 질문이라고 생각합니다. 마지막 충돌 이후 crontab을 비활성화했습니다. 이제 문제가 해결되면 이 게시물을 업데이트하겠습니다.

서버가 완전히 충돌하지 않았다고 믿게 만드는 또 다른 점은 해당 크론탭이 계속 작동한다는 것입니다.

Mar 28 10:00:01 aryx /USR/SBIN/CRON[10947]: (root) CMD (lynx -dump http://[webpage]/cron/cronjob.php)
Mar 28 10:00:06 aryx /USR/SBIN/CRON[10946]: (CRON) info (No MTA installed, discarding output)
Mar 28 10:09:01 aryx /USR/SBIN/CRON[11068]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -ignore_readdir_race -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
Mar 28 10:10:01 aryx /USR/SBIN/CRON[11088]: (root) CMD (lynx -dump http://[webpage]/cron/cronjob.php)
Mar 28 10:10:21 aryx /USR/SBIN/CRON[11087]: (CRON) info (No MTA installed, discarding output)
Mar 28 10:20:01 aryx /USR/SBIN/CRON[11221]: (root) CMD (lynx -dump http://[webpage]/cron/cronjob.php)
Mar 28 10:20:21 aryx /USR/SBIN/CRON[11220]: (CRON) info (No MTA installed, discarding output)

웹 서버가 10:00에서 10:10(다음 cron 호출이 실행될 때) 사이에 충돌한 경우(또는 그 당시 충돌한 내용)라도

[webpage]:80 [ip-address] - - [28/Mar/2014:09:50:01 +0100] "GET /cron/cronjob.php HTTP/1.0" 200 208 "-" "Lynx/2.8.8dev.12 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/2.12.18"
[webpage]:80 [ip-address] - - [28/Mar/2014:10:00:01 +0100] "GET /cron/cronjob.php HTTP/1.0" 200 208 "-" "Lynx/2.8.8dev.12 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/2.12.18"
[webpage]:80 [ip-address] - - [28/Mar/2014:12:00:02 +0100] "GET /cron/cronjob.php HTTP/1.0" 200 208 "-" "Lynx/2.8.8dev.12 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/2.12.18"

이런 이상현상은 오전 10시 이전에도 발생했다.

Mar 28 09:39:01 aryx /USR/SBIN/CRON[10658]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -ignore_readdir_race -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)*

어떤 제안이 잘못되었을 수 있나요?

고쳐 쓰다: plog를 사용하면 충돌 시(19:31에서 32 사이) 주목할만한 유일한 이벤트는 Apache 프로세스의 로그 파일입니다.

3-28 19:31   S     20         0s      1   185.34MB     7.46MB 96.2%     1012kB    16.66MB    17.73MB         429       0
3-28 19:32   S     20         0s      1   187.50MB     9.68MB 89.1%     1804kB    16.79MB    17.86MB        1281       0
3-28 19:33   S     20         0s      1   187.50MB     9.68MB 89.1%     1804kB    16.79MB    17.86MB        1281       0

답변1

문제는 실제로 서버 자체가 아닙니다. 서버는 가상 사설 서버이며 네트워크의 다른 서버에서도 사용할 수 있는 IP가 할당됩니다. 그렇기 때문에 임의의 연결 문제가 발생합니다!

관련 정보