HTTP request status: Fails 라는 메시지가 관리화면의 상태 보고서에 나타나는 경우

6.x 대에서 어느 날 갑자기 발생한 이상 현상이다.
HTTP request status: Fails 라는 메시지가 관리화면의 상태 보고서에 나타난 것이다.

상태보고서의 HTTP Request Fails Reset상태보고서의 HTTP Request Fails Reset

조사해 보니,
http://drupal.org/node/337673
http://drupal.org/node/359049
등에서 원인을 마이너 버전 업그레이드로 지목하고 있었다.

특히 6.8에서 6.9로의 업그레이드가 문제가 많은 듯 했다.
(수정 : 잘못된 원인 추정으로 판명됐다. 우리의 경우, 다른 원인이 있었다...)

하지만 드루지기가 관리하고 있는 6.8 사이트에서 6.9로 전부 동시에 업그레이드했을 때
위 문제가 발생하는 사이트는 딱 하나가 있었다. 나머지는 정상이었다.
어떤 특정 조건에서 발생하는 문제인 것 같은데... 시간이 없어서 더 분석은 못하고,
일단은 해결 조치에 들어갔다. (정확한 원인도 모르면서 해결 조치라니... 별로 좋은 패턴은 아니다)

해결 시도 하나.

1. Http Request Fail Reset 모듈을 설치/활성화 한다.
    http://drupal.org/project/http_request_fail_reset
    안타깝게도 2009년 1월 기준으로 5.x대 모듈은 없고, 6.x대 모듈 뿐이다.    

2. 관리자로 로그인한 후, http://드루팔 사이트/admin/logs/status/run-cron
    을 이용, 정기적인 크론 작업을 1회 수행한다.
   
    수정) 위 URL은 Clean URL을 이용가능한 드루팔에서만 사용할 수 있다.
    관리 > 보고서 > 상태보고 화면에 있는 "정기작업을 수동으로 실행" 링크를 클릭해도 된다.

3. 그리고 나서 상태 보고서를 보라. 문제가 사라졌는가? (우리는 이렇게 해서 해결했었다.) 

 

그로부터 며칠 뒤, 또다시 똑같은 현상이 발생했다.
역시나... 정확한 원인을 모르고 임시 대응한 것이 화근이었다.
이번에는 더 근본적인 원인을 찾아 많이도 헤맸다.
그러던 중 http://drupal.org/node/333345#comment-1112556 에 적혀있는
도메인 관련 언급에 아! 하고 무릎을 쳤다.

나의 모든 홈페이지들은 홈서버로 DNS의 설정 부족? 혹은 보안상 이유로 내부망에서는
서로를 볼 수 없게 돼 있었다. 아아... 혹시나 해서 /etc/resolv.conf 파일
(윈도우즈에서는 /windows/system32/drivers/etc/hosts 파일 )에다가
해당 사이트를 IP로 직접 입력해서 Domain Name 을 정의했다. 그랬더니...
보라. 문제 현상이 사라졌다!!!

해결 시도 둘째. 이것은 특효약이었다.

1. 문제 현상이 발생하는 드루팔이 홈서버나 호스팅으로 운영되면서,
DNS의 설정 부족으로 내부적으로 자체 홈서버에 접속하지 못하는 경우에는...

2. 드루팔이 설치된 서버의 /etc/resolv.conf 파일
(윈도우즈에서는 /windows/system32/drivers/etc/hosts 파일 )에다가
해당 사이트를 IP로 직접 입력해서 Domain Name 을 정의하라.

3. 그리고 나서 상태 보고서를 보라. 문제가 사라졌는가? (우리는 이렇게 해서 또 해결했었다.)

[만일 이 방법으로 해결됐다면 원인!을 제시할 수 있다]
드루팔에서 HTTP Request를 체크하는 system_check_http_request() 함수에서
제대로 된 경고/에러를 보여주는 것(위 문제 현상)이다. 하지만 실제로는 문제가 없는 것이다.
자기 자신의 서버에서만 내부의 홈페이지로 접근이 안될 뿐, 실제로는 외부로의 웹 Request는 잘 된다.
그래도 관리자로 상태보고 화면을 봤을 때, 위 문제 현상의 메시지가 아주 신경이 쓰이므로,
가능하면 해결해 주는 것이 좋겠다. 혹시 아나... 내부망에서 내부망으로의 참조가 필요할지.   

 

* 그 이외에도 온갖 해결책들이 예로 나와 있었으나 각각의 상황이 달라 해결되지 않을 수 있다.

예를 들자면,

- .htaccess 파일의 수정
- php.ini 파일의 설정 수정
- 드루팔 코어 파일의 수정, 특히 includes/commons.inc
- mainternance(정비용 안내 화면) 설정을 오프/온으로 해 본다든지...

정말이지 정확한 원인을 모른다는 건... 안타까운 일이다.

Your rating: None 평균 : 5 (1 vote)

댓글

내용을 자세히 써

내용을 자세히 써 드리지 못해 죄송합니다. 다시 상세히 써 드리자면,

드루팔 6.x대에서는 관리자로 로그인후,
관리 > 보고서 메뉴 > 상태 보고를 클릭했을 때 나오는 화면을 보면,
"정기 작업을 직접 실행"이라는 링크가 보일 겁니다.

바로 그 링크의 주소가 http://드루팔 사이트/admin/logs/status/run-cron 입니다.
"정기 작업을 직접 실행"이라는 링크를 직접 클릭해도 같은 효과입니다.

아! 혹시 Clean URL 기능이 활성화 돼 있지 않으면 말씀하신 에러가 날지도 모르겠네요.
Clean URL을 사용하지 않는 드루팔의 경우, 웹 주소창에 ?q=어쩌구저쩌구 하는 형태일 겁니다.

------------

드루팔 5.x대에서는 관리자로 로그인후,
관리 > 로그 > 상태 보고를 클릭했을 때 나오는 화면을 보면,
"정기 작업을 직접 실행"이라는 링크가 보일 겁니다.

Clean URL 기능을 사용하는 5.x대 드루팔의 경우,
그 링크의 주소도 역시나 http://드루팔 사이트/admin/logs/status/run-cron 입니다.