파이썬과 플라스크 프레임 워크를 사용하여 웹 응용 프로그램을 작성하고 mod_wsgi를 사용하여 Apache에서 설정했습니다. 오늘 JMeter를 사용하여이 애플리케이션에서 일부 부하 테스트를 수행했습니다. 하나 개의 웹 URL의 경우 : 내가 요청을 보내는 데에만 1 개 스레드를 설정스트레스 상황에서 웹 요청 성능이 매우 좋지 않습니다.
, 응답 시간은 200 밀리 내가 더에 요청, 응답 시간 증가를 보낼 수있는 20 개 개의 동시 스레드를 설정
4000ms (4s). 이것은 받아 들일 수 없다!
나는이 문제를 찾기 위해 노력하고있어, 그래서 나는 술병의 before_request와 teardown_request 방법으로 시간을 기록했다. 요청을 처리하는 데 걸리는 시간이 10ms를 약간 넘는 것으로 나타났습니다.
이 URL 처리기에서 앱은 MySQL 데이터베이스에서 일부 SQL 쿼리 (약 10 개) 만 수행하며 특별한 것은 없습니다.
웹 서버 또는 프레임 워크 구성에 문제가 있는지 테스트하려면 동일한 플레인 응용 프로그램에서 Hello라는 또 다른 메서드를 작성하여 문자열 만 반환하면됩니다. 그것은 부하를 완벽하게 수행하며, 응답 시간은 13ms이며 20 스레드 동시성을가집니다.
로드 테스트를 수행 할 때 내 서버에서 '최상위'를 실행합니다. 약 10 개의 아파치 스레드가 있지만 CPU는 주로 유휴 상태입니다.
지금 제 재능이 끝났습니다. 요청이 순차적으로 수행 되더라도 성능이 크게 떨어지지 않아야합니다 ... 내 생각에 내가 알지 못하는 일부 대기열이 있으며 요청 처리 외에 오버 헤드가 있어야합니다.
웹 응용 프로그램의 성능을 튜닝 한 경험이있는 경우 도와주세요!
mod_wsgi에 관해서는<IfModule mpm_worker_module>
StartServers 4
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 50
MaxClients 200
MaxRequestsPerChild 0
</IfModule>
, 나는 (다음 줄을 주석에 의해) 오프 WSGIDaemonProcess 터닝 시도 : 아파치 구성에 대한
편집
, 나는 MPM 작업자 모드 구성을 사용 성능은 동일하게 보입니다.
# WSGIDaemonProcess tqt processes=3 threads=15 display-name=TQTSERVER
오랜 시간이 걸리는 SQL 쿼리가 확실하지 않습니까? 대부분의 시간 인덱싱에서는 열을 사용하고 쿼리 수정을 수정하면 속도 문제가 발생합니다. – inhan
그러나 요청 처리 (모든 SQL 실행 포함)는 약 10ms 후에 완료됩니다. 나는 나머지 시간에 어떤 일이 일어나는지 궁금합니다 - 3900ms 이상. – NeoWang
작업자 MPM의 경우 데몬 모드와 크게 다르지는 않지만 사용자가 거기에서 인용 한 내용에 따라 데몬 모드를 실행하고 있는지 여부는 알 수 없습니다. http://blog.dscpl.com.au/2012/10/why-are-you-using-embedded-mode-of.html –