2011-09-27 2 views
0

제가 조정 한 내용에 상관없이 내 서버가 20000x40000 벤치 마크 테스트를 통과 할 수없는 병목 현상이 생길 수 있습니다. 서버에는 128G 램이 있고 Xeon 6 코어 CPU 인 centos5.6-64bit가 좋은 모양입니다. 그 중nginx + uwsgi + python2.7은 20000x40000 벤치마킹을 통과 할 수없는 병목 현상이 발생합니다

nginx + uwsgi + python2.7 
nginx + apache + mod_wsgi + python2.7 
apache + mod_wsgi + python2.7 

것도 아파치 벤치마킹을 통해 할 수 없었다 :

ab -c 20000 -n 40000 (without -k) 

과 일치하여, 거의 모든 시험은 약 32000 개 요청

의 nginx에 대한

세부 실패

내가 포함한 조합을 시도 및 uwsgi :

nginx :

worker_processes 24 
use epoll 
worker_connections 65535 

uwsgi :

listen 2048 
master true 
workers 24 
uwsgi -x /etc/uwsgi_conf.xml --async 256 --file /var/www/example.py & 

아무도 그것에 대해 어떤 생각을 가지고? 미리 가능한 해결책과 제안에 감사드립니다.

답변

2

단일 시스템에서 이와 같은 양의 동시 연결을 허용하려면 많은 커널 튜닝 목록이 필요하며 프로덕션 환경에서는 그러한 부하를 관리 할 수 ​​없을 것입니다.

당신이 그렇게에 임시 포트의 수, 소켓 백 로그 큐, 프로세스 당 허용되는 파일 기술자의 수와 증가하는 모두의

먼저 ...이 외에도

(즉 이미 충분해야한다 그러한 비현실적인 테스트를 중지하려면 uWSGI의 비동기 코어 수를 20k로 늘려야합니다. taht (각각의 코어는 메모리 페이지보다 적은 양을 소비 함)에는 아무런 문제가 없지만 시스템에 적어도 40k 소켓을 열면 종료됩니다.

이것은 nginx + uwsgi 용입니다.

아파치를 사용하면 20k 프로세스 또는 스레드로 끝나게됩니다. 이는 40k 소켓보다 훨씬 나쁩니다.

+0

답장을 보내 주셔서 대단히 감사드립니다. 내가 13076469, local_port_range 1024에서 65535, somaxconn에서 1048576로 파일을 늘렸다. 믿을만하다. 그러나 시험에 아무런 운이 없다. – xpu

+0

그리고 나는 nginx worker, worker_connection, uwsgi asyn core, 여전히 운이 없다. – xpu

+0

하나 더 질문한다. : 20kx40k 벤치가 터무니없는가요? 나는 20k 동시성이 큰 숫자가 아닐 것이라고 생각했다. – xpu

관련 문제