2011-12-23 3 views
3

나는 간단한 (흉내) 웹 애플리케이션 벤치 마크 설정이 있습니다TCP 연결을 디버그하는 방법 거부 되었습니까?

LoadGenerator을 -> 아파치 ->

내가 몇 천 테스트 사용자 ... 예상대로 작품을 evertything 내 벤치 마크를 실행하는 웹 애플리케이션

.

그러나 테스트 사용자의 수를 약 14k로 늘리면 내 Apache 서버가 내 LoadGenerator에 번을 연결하기 시작합니다.. CPU 사용률은 거의 아무런 제한이 없습니다. 아파치에서 웹 애플리케이션으로 연결이 끊어지는 것 같습니다.

저는 Apache 서버에서 리소스가 부족하다고 생각하지만 무엇을 말할 수 있습니까? 나는 그것이 항구 일 수 있었다고 생각했다. .. 그러나 나의 접속은 내가 ​​믿는 것을 위해 아주 아주 높이 arent한다.

다음 나는 tcpdump 정보를 보았다. .. 그러나 나는 정말로 흥미있는 anyhting를 보지 않았다. 솔직히 말해서, 나는 Wireshark에 덤프장을 열고 큰 빨간 흔적을 찾았다.

내가 무슨 일이 일어나고 있는지를 알려주는 뭔가를 볼 수있는 커널 출력 오류 메시지가있을 수 있습니까? 완벽한 세계에서 "오류 : 연결 수가 많으면 X가 아닙니다"와 같은 오류 메시지가 나타납니다.

내 LoadGenerator가 계속 충돌을 거부하는 이유를 알아보기 위해 권장되는 다른 모든 팁은 무엇입니까?

답변

0

구글의 TIME_WAIT '를 사용하는 방법 많은 노동자 볼 수 있습니다 - 당신은 아마 가능한 소켓에서 실행하고 있습니다. 당신이 자원에서 생각하는 경우

+0

는 처음에, 나는 수십 TIME_WAITS 수천 있었다, 그때 나는 KeepAlive를 켜 ... 거의 내 모든 TIME_WAITS 멀리 갔다. 이제 7k 또는 8K 연결을 구축했습니다 ....하지만 문제는 지속됩니다. 그래서 그것은 그것을 wasnt한다. –

0

다음이 프로세스의 자원 제한을 보여줍니다

ulimit -a 

을 시도하십시오. 출력은 다음과 같습니다.

core file size (blocks) 1000000 
    data seg size (kbytes) unlimited 
    file size (blocks)   unlimited 
    max memory size (kbytes) unlimited 
    stack size (kbytes)   8192 
    cpu time (seconds)   unlimited 
    max user processes   unlimited (1) 
    pipe size (512 bytes)   8 
    open files     1024 
    virtual memory (kbytes) 2105343 

여기서 열린 파일을 확인합니다. fd (소켓, 파이프, 파일 등을 포함)의 한계를 기술하는 것은 리눅스가 열 수있게 해준다.

당신은 당신이 같은 문제가 있는지 확인

-n ulimit를하여이를 변경할 수 있습니다. 그렇지 않으면 유용하지 않습니다.

ulimit를 심판 : http://ss64.com/bash/ulimit.html

+0

필자는 ulimit을 확인했는데, 주로 열린 파일 설명자의 제한 사항을 확인했습니다 ... 그 사람이 저의 용의자였습니다. 나는 아래에 있었다. 나는 일종의 밀교 tcp 매개 변수가 될 수 있다는 느낌을 받는다. 하나는 초당 400 개 이상의 연결에 대해 조정될 필요가있을 것이다. –