Apache 연결 실패 문제 해결

Apache 연결 실패 문제 해결

아파치에서 이상하고 간헐적인 연결 실패 문제를 해결하려고 합니다. 우리가 호스팅하는 웹 애플리케이션의 일부가 작동하지 않는다고 사용자들이 불평했을 때 문제를 발견했습니다. 디버깅 결과 AJAX 요청이 JavaScript 애플리케이션이 기대하는 XML 또는 JSON 데이터를 반환하지 않는 것으로 나타났습니다. 애플리케이션은 SSL을 통해 제공됩니다.

직접 테스트했을 때 간헐적으로 오류가 발생하는 것을 볼 수 있었고 Firebug는 응답 길이가 0이거나 연결이 완전히 실패한 것처럼 보인다는 것을 보여주었습니다. Firebug가 응답이 비어 있다고 보고한 경우를 포함하여 서버의 애플리케이션 로그에는 아무런 문제가 표시되지 않았습니다. 서버의 애플리케이션 로그에는 데이터가 전송되었음을 표시했습니다.

직감적으로 apachebench( ab)를 실행했는데 몇 가지 연결 실패를 발견하고 놀랐습니다.

[jnet@Stan ~]$ ab -v 1 -n 1000 -c 10 $url
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking workingman.smart-safe-secure.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        Apache/2.2.3
Server Hostname:        workingman.smart-safe-secure.com
Server Port:            443
SSL/TLS Protocol:       TLSv1/SSLv3,DHE-RSA-AES256-SHA,1024,256

Document Path:          /
Document Length:        659 bytes

Concurrency Level:      10
Time taken for tests:   104.086 seconds
Complete requests:      1000
Failed requests:        2
   (Connect: 2, Receive: 0, Length: 0, Exceptions: 0)
Write errors:           0
Total transferred:      945000 bytes
HTML transferred:       659000 bytes
Requests per second:    9.61 [#/sec] (mean)
Time per request:       1040.855 [ms] (mean)
Time per request:       104.086 [ms] (mean, across all concurrent requests)
Transfer rate:          8.87 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      356  844 215.7    840    2268
Processing:    68  194 138.9    128    1483
Waiting:       67  178 122.0    116    1426
Total:        494 1039 241.8    993    2623

Percentage of the requests served within a certain time (ms)
  50%    993
  66%   1039
  75%   1101
  80%   1162
  90%   1407
  95%   1492
  98%   1626
  99%   1718
 100%   2623 (longest request)

이러한 요청은 정적 HTML 페이지에 대한 것이므로 내 PHP 애플리케이션은 여기서 문제가 되지 않는 것 같습니다. SSL이 아닌 일반 HTTP를 통해 테스트를 실행하면 전혀 오류가 발생하지 않았습니다 . 무슨 일이 일어날지 몰라 당황스럽습니다. 여기에서 어떻게 문제를 해결해야 할지조차 모르겠습니다. 기꺼이 httpd.conf 구성을 게시하겠습니다. 어떤 부분이 도움이 될지 알려주세요. 서버는 mpm_worker 및 mod_fastcgi가 포함된 Apache/2.2.3(CentOS)입니다.

업데이트: 방금 동일한 HTML 페이지에 대해 일반 HTTP를 통해 첫 번째 ab 테스트에서 2개의 연결 실패를 반환했습니다. 결국 SSL에는 문제가 없는 것 같습니다.

업데이트 2: 일종의 네트워크 문제일 가능성이 있습니다. ab동일한 데이터 센터의 서버에서 이를 복제할 수 없거나 ablocalhost에서 이를 복제할 수 없기 때문입니다. 그러나 내 워크스테이션에서 문제의 서버를 ping하면 패킷 손실이 0%로 표시됩니다... 그래서 다음에 어떤 조치를 취해야 할지 잘 모르겠습니다.

업데이트 3: 도움이 된다면 abSSH 터널을 통해 벤치마킹을 실행하면 오류가 발생하지 않습니다. 따라서 이는 아파치 문제가 아닌 네트워킹 문제일 수도 있습니다.

답변1

요청이 동일한 데이터 센터에서 수행되거나 SSH 터널을 사용할 때 훌륭하게 작동한다고 말하면 데이터 센터의 원격 사이트 간에 일종의 구성이 될 수 있다고 생각합니다.
icmp와 ssh(및 기타)가 http보다 우선순위가 더 높은 것처럼 말입니다. 따라서 WAN에 과부하가 걸리면 라우터가 http 트래픽을 삭제할 수 있습니다. 일반적으로 SSH는 높은 상호 작용이 필요하기 때문에 우선 순위가 높은 반면 FTP는 파일 전송이므로 우선 순위가 낮습니다.
Shaping이나 QOS가 적용되어 있는지 네트워크 팀에 문의하세요.

또 다른 점은 연결 시간이 356에서 2268까지라는 것이 문제일 수 있다는 것입니다. 356은 꽤 느리기 때문에 SSH를 사용하여 터널링할 때는 그보다 짧을 것 같습니다. min과 max 사이의 차이가 너무 커서 일부 패킷이 아마도 삭제되고(QOS/Shaping으로 인해) 재전송이 필요하다는 것을 알 수 있습니다(따라서 연결 시간이 느려짐).

관련 정보