Apache 연결 시간 초과, 무엇이 잘못되었을 수 있습니까?

Apache 연결 시간 초과, 무엇이 잘못되었을 수 있습니까?

나는 매우 불안정한 Apache 서버를 가지고 있으며 하루에 여러 번 Apache에 연결하는 데 어려움을 겪습니다. 이유를 알 수 없습니다. 왜냐하면 나에게는 모든 것이 괜찮은 것 같기 때문입니다. 서버에는 항상 "많은" 무료 리소스가 있습니다. 서버는 4GB RAM, 48GB HD 및 2개의 CPU를 갖춘 Linode 4098입니다.

나는 사용하고있다mod_status아파치 상태를 확인하려고 하는데 /server-status 페이지에 액세스하려고 하면 연결 시간 초과 오류가 계속 발생합니다.

내 현재 아파치 conf

<IfModule mpm_prefork_module>
        StartServers            3
        ServerLimit             200
        MinSpareServers         3
        MaxSpareServers         5
        MaxRequestWorkers       175
        MaxConnectionsPerChild  100
        MaxRequestsPerChild     20
</IfModule>

/server-status에 대한 거의 모든 두 번째 Apache 요청이 ERR_CONNECTION_TIMED_OUT으로 인해 실패합니다.

내가 이해할 수 없는 것은 서버를 확인할 때 사용 가능한 리소스가 많고 유휴 연결이 있기 때문에 이런 일이 발생하는 이유입니다.

예를 들어 /server-status는 사용 가능한 많은 연결을 보고합니다.

Parent Server Config. Generation: 1
Parent Server MPM Generation: 0
Server uptime: 1 hour 6 minutes 6 seconds
Server load: 0.09 0.15 0.14
Total accesses: 27206 - Total Traffic: 79.8 MB
CPU Usage: u3.92 s.77 cu0 cs0 - .118% CPU load
6.86 requests/sec - 20.6 kB/second - 3077 B/request
52 requests currently being processed, 1 idle workers

RRRCRRRRRRRRRRRRRRRRRRCRRC.RR.R.RRRRRRRRRCRRRRR_WCCRR.R..RR.....
................................................................
...............................................

그리고 가동 시간을 보니 CPU도 사용할 수 있는 것 같습니다.

load average: 0.05, 0.12, 0.14

사용 가능한 메모리가 있습니다.

        total   used   free  shared  buff/cache   available  
> Mem:   3.9G    1.3G   413M     81M        2.1G        2.3G

무엇이 잘못될 수 있는지 아는 사람이 있나요?

업데이트: 요청에 따라 여기에 액세스 로그의 일부가 있습니다. (99%는 /api2/counting/count 스크립트 핸들러를 호출하여 통계 추적에 관한 요청입니다)

4.139.128.194 - - [23/Jan/2017:11:38:36 +0000] "POST /api2/counter/count?r=1485171514298 HTTP/1.1" 200 441 "-" "WriteDiary4.72"
176.38.149.76 - - [23/Jan/2017:11:38:36 +0000] "POST /api2/counter/count?r=1485171517077 HTTP/1.1" 200 454 "-" "WriteDiary4.72"
67.84.227.131 - - [23/Jan/2017:11:38:36 +0000] "GET /keepalive?471:1485171524866 HTTP/1.1" 200 469 "https://www.writediary.com/notes" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393"
122.178.156.252 - - [23/Jan/2017:11:38:36 +0000] "POST /api2/counter/count?r=1485171515804 HTTP/1.1" 200 441 "-" "WriteDiary4.72"
82.137.13.18 - - [23/Jan/2017:11:38:37 +0000] "POST /api2/counter/count?r=1485171525558 HTTP/1.1" 200 441 "-" "WriteDiary4.72"
103.199.35.221 - - [23/Jan/2017:11:38:37 +0000] "POST /api2/counter/count?r=1485171515470 HTTP/1.1" 200 441 "-" "WriteDiary4.72"
95.218.142.245 - - [23/Jan/2017:11:38:37 +0000] "POST /api2/counter/count?r=1485171516264 HTTP/1.1" 200 441 "-" "WriteDiary4.72"
47.31.143.106 - - [23/Jan/2017:11:38:37 +0000] "POST /api2/counter/count?r=1485171515787 HTTP/1.1" 200 441 "-" "WriteDiary4.72"
94.139.128.194 - - [23/Jan/2017:11:38:37 +0000] "POST /api2/counter/count?r=1485171515619 HTTP/1.1" 200 441 "-" "WriteDiary4.72"
120.188.33.198 - - [23/Jan/2017:11:38:37 +0000] "POST /api2/counter/count?r=1485171515867 HTTP/1.1" 200 454 "-" "WriteDiary4.72"
47.29.174.163 - - [23/Jan/2017:11:38:37 +0000] "POST /api2/counter/count?r=1485171515122 HTTP/1.1" 200 441 "-" "WriteDiary4.72"
85.115.224.151 - - [23/Jan/2017:11:38:37 +0000] "POST /api2/counter/count?r=1485171515453 HTTP/1.1" 200 441 "-" "WriteDiary4.72"
47.11.219.147 - - [23/Jan/2017:11:38:37 +0000] "POST /api2/counter/count?r=1485171516596 HTTP/1.1" 200 441 "-" "WriteDiary4.72"
61.5.53.52 - - [23/Jan/2017:11:38:37 +0000] "POST /api2/counter/count?r=1485171520665 HTTP/1.1" 200 441 "-" "WriteDiary4.72"
116.102.205.20 - - [23/Jan/2017:11:38:37 +0000] "POST /api2/counter/count?r=1485171516590 HTTP/1.1" 200 454 "-" "WriteDiary4.72"
101.60.31.133 - - [23/Jan/2017:11:38:37 +0000] "POST /api2/counter/count?r=1485171516802 HTTP/1.1" 200 441 "-" "WriteDiary4.72"
47.31.147.213 - - [23/Jan/2017:11:38:37 +0000] "POST /api2/counter/count?r=1485171515431 HTTP/1.1" 200 5131 "-" "WriteDiary4.72"
186.78.73.222 - - [23/Jan/2017:11:38:37 +0000] "POST /api2/counter/count?r=1485171669305 HTTP/1.1" 200 454 "-" "WriteDiary4.72"
112.79.186.36 - - [23/Jan/2017:11:38:38 +0000] "POST /api2/counter/count?r=1485171736857 HTTP/1.1" 200 454 "-" "WriteDiary4.72"
94.139.128.194 - - [23/Jan/2017:11:38:38 +0000] "POST /api2/counter/count?r=1485171516605 HTTP/1.1" 200 441 "-" "WriteDiary4.72"
24.236.88.161 - - [23/Jan/2017:11:38:38 +0000] "POST /api2/counter/count?r=1485171516752 HTTP/1.1" 200 441 "-" "WriteDiary4.72"
150.31.100.192 - - [23/Jan/2017:11:38:38 +0000] "POST /api2/counter/count?r=1485171517315 HTTP/1.1" 200 454 "-" "WriteDiary4.72"
12.181.196.67 - - [23/Jan/2017:11:38:38 +0000] "GET /keepalive?50412:1485171517975 HTTP/1.1" 200 501 "https://www.writediary.com/notes" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
112.198.75.139 - - [23/Jan/2017:11:38:38 +0000] "POST /api2/counter/count?r=1485171408169 HTTP/1.1" 200 4794 "-" "WriteDiary4.72"
114.125.201.114 - - [23/Jan/2017:11:38:38 +0000] "POST /api2/counter/count?r=1485172944904 HTTP/1.1" 200 441 "-" "WriteDiary4.72"

해결책: 더 많은 작업자를 허용하기 위해 서버를 업그레이드해야 했습니다. 각 Apache 연결에는 약 30MB 또는 Ram이 필요하므로 서버는 4GB RAM 제한을 적용하여 = 4000MB / 30MB = 최대 133개 연결을 허용했으며 일부 메모리가 mysql 및 기타 시스템 기능에 할당되면 실제로는 3.5GB에 불과합니다. 사용할 수 있으며 최대 100개에 가까운 연결을 제공합니다.

8GB RAM으로 업그레이드하면 최대 연결 수가 250개에 가까워지므로 모든 것이 원활하게 실행됩니다. 실제로 RAM 크기를 조정한 후 서버 상태 보고 200개의 요청이 피크 타임에 여러 시간 동안 Apache에 의해 동시에 처리되었습니다. 이것이 서버가 피크 타임에 100에 가까운 제한으로 어려움을 겪는 이유를 설명합니다.

답변1

아파치 액세스 로그를 게시해 주시겠어요?

우분투를 사용하는 경우 이 명령을 사용하여 로그를 찾을 수 있습니다

cat /var/log/apache2/access.log

하지만 플랫폼에 따라 다릅니다

관련 정보