2011-01-13 2 views
0

업데이트 - 문제는 서버가 이번 주 초 은퇴 한 파일 서버에서 마운트를 가리키는했다 밝혀졌다Django 웹 앱에 대한 요청이 행하고 있습니다. 간단한 디버깅 팁?

해결; 결국 django/mod-python/etc와 관련이 없습니다. 마운트를 업데이트하면 문제가 해결됩니다. 야생 거위 추적에 대한 의견 & 도움말 및 사과에 대한

많은 감사 ... 나는

요약

I :-) 어떤 경우에 모드 - 파이썬을 업그레이드로 살펴 보겠습니다 며칠 전까지는 정상적으로 작동하는 Django webapp를 유지하고 있지만 이제 모든 웹 요청은 수개월 동안 지속됩니다. 나는 무엇이 바뀌 었는지 알지 못하기 때문에, 문제는 아마 상당히 간단 할 것이다.

웹 서버를 다시 시작하고 httpd를 다시 시작해 보았습니다. 'top'은 서버가 CPU 및 메모리에 문제가 없음을 보여줍니다.

누군가가 잘못 될 가능성이있는 다른 간단한 것들이나 다른 것들을 확인할 수 있습니까?

자세한 내용

나는 웹 서버를 만들지 않은, 그래서 불행하게도 나는 자세한 내용 완전히 확실하지 않다, 또는 경우 모든 로그 등 내가 웹 서버가 알고를 찾기 위해 Django를 사용하여 구현되었습니다. Linux 서버에서 실행됩니다. PostgreSQL 데이터베이스를 사용합니다. 정적 컨텐츠에 대한 lighttpd; 아파치가 들어오는 HTTP 요청을 처리하고 그들을 mod_python을 통해 Django로 전달한다. memcached를 사용하여 렌더링 된 페이지를 캐시합니다. 나는 리눅스 서버와 데이터베이스에 대한 완전한 접근권을 가지고 있기 때문에, 어디서든지 볼 수 있다면 무엇이든 행복하게 엿볼 수있다.

/var/log/httpd/access_log와 error_log는 새로운 요청을 할 때마다 다음과 같은 행을 표시합니다. 나는 mod_python 라인이 에러를 나타내 었는지 알지 못한다. (나는이 로그를봤을 때 아무것도 알지 못했다.)

ACCESS_LOG :

127.0.0.1 - - [13/Jan/2011:10:56:11 +0000] "GET /testruns/testrun2176/ HTTP/1.0" 301 - "http://myapp/testruns/" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729; .NET4.0E)" 

의 error_log :

# python manage.py runserver 0.0.0.0:8088 
Validating models... 
0 errors found 

Django version 1.0-final-SVN-unknown, using settings 'myapp.settings' 
Development server is running at http://0.0.0.0:8088/ 
Quit the server with CONTROL-C. 
[13/Jan/2011 14:23:31] "GET /testruns/testrun2176/ HTTP/1.1" 301 0 

그런 다음 아무 일도 발생하지 않습니다 개발 서버를 실행 한

[Thu Jan 13 10:34:19 2011] [notice] mod_python: (Re)importing module 'django.core.handlers.modpython' 

출력. 웹 페이지가 로딩에 걸렸습니다.

약간 더 간단한 페이지 중 하나를로드 할 수 있습니다. dev 버전을 통해 사진은로드되지 않지만 그렇지 않은 경우 괜찮습니다. 간단한 페이지입니다에서/testruns/- 어떤 이유로 나는 경우 runserver 출력에 해당 페이지가 표시되지 않는 있지만 :

# python manage.py runserver 0.0.0.0:8088 
Validating models... 
0 errors found 

Django version 1.0-final-SVN-unknown, using settings 'myapp.settings' 
Development server is running at http://0.0.0.0:8088/ 
Quit the server with CONTROL-C. 
[13/Jan/2011 14:27:42] "GET /static/myapp.css HTTP/1.1" 404 1113 
[13/Jan/2011 14:27:42] "GET /static/myapp_print.css HTTP/1.1" 404 1113 
[13/Jan/2011 14:27:42] "GET /static/myapp_ticks_crosses.css HTTP/1.1" 404 1113 

내가 다시 지적해야을,이 모든 작업을 잘 며칠 전이었다. 그 이후로는 아무 것도 명시 적으로 변경하지 않았습니다. 갑자기 필요한 페이지가로드되지 않는다는 사실을 발견했으며, 이유를 찾으려고합니다.

/var/log/httpd/log 파일은 특별히 흥미로운 내용을 표시하지 않는 것 같아요. 내가 무엇을 봐야하는지 잘 모르겠습니다.

우리는 다른 테스트 결과 세트에서 작동하는 두 번째 서버를 실행 중입니다. 그 위에서 개발 서버를 실행하면 301 리다이렉트 (.../testrunX/.../testrunX/broken/page1 /로 리디렉션 될 것으로 예상 됨)가 표시됩니다.

// This trace, on a different server but with a similar setup, shows that the 
// 301 redirect is expected, and is not the source of the problem 
[server2]# python manage.py runserver 0.0.0.0:8088 
Validating models... 
0 errors found 

Django version 1.0-final-SVN-unknown, using settings 'myapp.settings' 
Development server is running at http://0.0.0.0:8088/ 
Quit the server with CONTROL-C. 
[13/Jan/2011 14:47:59] "GET /testruns HTTP/1.1" 301 0 
[13/Jan/2011 14:47:59] "GET /testruns/ HTTP/1.1" 200 11568 
[13/Jan/2011 14:47:59] "GET /static/myapp.css HTTP/1.1" 404 1131 
[13/Jan/2011 14:47:59] "GET /static/myapp_print.css HTTP/1.1" 404 1131 
[13/Jan/2011 14:47:59] "GET /static/star.png HTTP/1.1" 404 1131 
[13/Jan/2011 14:47:59] "GET /static/myapp_ticks_crosses.css HTTP/1.1" 404 1131 
[13/Jan/2011 14:47:59] "GET /static/star.png HTTP/1.1" 404 1131 
[13/Jan/2011 14:48:02] "GET /static/star.png HTTP/1.1" 404 1131 

[13/Jan/2011 14:48:12] "GET /testruns/testrun1879/ HTTP/1.1" 301 0 
[13/Jan/2011 14:48:12] "GET /testruns/testrun1879/broken/page1/ HTTP/1.1" 200 309477 
[13/Jan/2011 14:48:12] "GET /static/myapp.css HTTP/1.1" 404 1131 
[13/Jan/2011 14:48:12] "GET /static/myapp_print.css HTTP/1.1" 404 1131 
[13/Jan/2011 14:48:13] "GET /static/myapp_ticks_crosses.css HTTP/1.1" 404 1131 

그래서 무한 루프가 있다고 생각하지 않습니다. 몇 가지 이유로 요청/데이터베이스 쿼리/다른 뭔가가 너무 오래 걸리거나 완전히 붙어 있습니다. 나쁜 서버

memcached와 정보

memcached를 꽤 비어 보인다. 그러나 그것은 아마도 웹 요청이 실패한 경우, 즉 캐시에 저장되도록 반환 된 항목이없는 경우 (캐시 만료 시간은 12 시간) 예상됩니다.

나쁜 서버 :

// Top - only using 6K memory (VIRT) 
PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
30743 nobody 15 0 6640 4972 476 S 0.0 1.9 0:00.01 memcached 

// memcache-top from http://code.google.com/p/memcache-top/ 
// only using 0.2% available space 
memcache-top v0.6  (default port: 11211, color: on, refresh: 3 seconds) 
INSTANCE    USAGE HIT % CONN TIME EVICT/s READ/s WRITE/s 
127.0.0.1:11211   0.2% 0.0% 5  0.8ms 0.0  2  161 
AVERAGE:    0.2% 0.0% 5  0.8ms 0.0  2  161 
TOTAL:   111.0KB/ 64.0MB   5  0.8ms 0.0  2  161 

좋은 서버 :

// Top - using ~68K memory (VIRT) 
    PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
2503 nobody 15 0 67900 8256 396 S 0.0 3.2 0:01.68 memcached 

// memcache-top - using 63% space 
memcache-top v0.6  (default port: 11211, color: on, refresh: 3 seconds) 
INSTANCE    USAGE HIT % CONN TIME EVICT/s READ/s WRITE/s 
127.0.0.1:11211   63.2% 0.0% 3  1.2ms 0.0  0  0 
AVERAGE:    63.2% 0.0% 3  1.2ms 0.0  0  0 
TOTAL:   40.5MB/ 64.0MB   3  1.2ms 0.0  0  0 
+0

301 공진은 리디렉션을 제안합니다 ... URL이 무한 루프를 일으킬 수있는 것처럼 보입니다. – crodjer

+0

dev 서버에 이미지가 표시되지 않으면 올바르게 구성된 정적 뷰가 누락 될 수 있습니다. 그들! 문제를 설명 할 때 url 구성 및보기와 더 관련이 있습니다. –

답변

2

그냥 몇 가지 점을 언급 :

  • 하는 것은 가능한 한 빨리 mod_python을 사용에서 도망하려고한다, 그것의 사용법이 비난되고 장고에 의해 장래에 지원되지 않을 것이기 때문에.
  • 개발 서버를 사용하여 문제를 재현 할 수 있습니까?
  • 다른 데이터베이스 백엔드를 사용하여 재현 할 수 있습니까?
  • 너무 복잡한 데이터베이스 쿼리 또는 유사한 문제가 발생하는지 확인하려면 django-debug-toolbar을 사용해보십시오!
  • 오류 로그에있는 라인 doesn't indicate an error!
+0

개발 서버를 실행하면 동일한 문제가 발생합니다. 요청이 중단됩니다. 지금이 일이 며칠 전에 왜 작동하지 않는지에 집중하려고합니다. 나는 어떤 설정도 변하지 않았다고 생각한다; 데이터베이스에 더 많은 데이터가있는 것을 제외하고는. mod_python을 오랫동안 사용하지 않는 것이 옵션 일 수도 있지만, 그 동안에는 현재 문제를 어떻게 처리했는지 알 수 없습니다. – sam

+0

+1은'mod_python'을 사용하지 않습니다! –

+0

@sam, 당신은 runserver를 시도했다. 페이지를 요청할 때 runserver의 결과는 무엇입니까? 출력이 표시되지 않으면 방화벽이나 연결에 문제가있을 수 있습니다. 잘못된 URL이있는 페이지에 액세스하려고 시도했을 수 있습니다. – Ski

관련 문제