![내 데비안 서버가 왜 충돌했나요?](https://rvso.com/image/52117/%EB%82%B4%20%EB%8D%B0%EB%B9%84%EC%95%88%20%EC%84%9C%EB%B2%84%EA%B0%80%20%EC%99%9C%20%EC%B6%A9%EB%8F%8C%ED%96%88%EB%82%98%EC%9A%94%3F.png)
어제 저녁에 데비안 서버를 새로 설치했습니다. 저는 호스팅 업체에서 제공하는 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시에서 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가 할당되었습니다. 그렇기 때문에 임의의 연결 문제가 발생했습니다!