, 및 일부 앱 과 Apache
같은 일부 서비스를 실행하는 웹 서버가 있습니다 . 트래픽이 많은 시간에는 내 서버가 과도한 로드를 지원하지 않는 것 같습니다. 이 문제가 발생하면 종종 페이지에 액세스하려고 할 때 다음 메시지를 받습니다 .Mysql
Redis
NodeJS
mysql
Warning: mysqli_connect(): (HY000/2003): Can't connect to MySQL server on '127.0.0.1' (99)
이 메시지는 간헐적으로 나타나는데, 페이지를 새로 고치면 대부분의 경우 이 메시지가 다시 나타나지 않습니다. 또한 mysqltuner.pl에서 항상 다음과 같은 결과가 나오므로 이것이 mysql 구성에 문제가 되지 않는다고 생각합니다.
[OK] Highest usage of available connections: 74% (336/450)
마찬가지로 Redis 서버는 서버에 연결하는 데 문제가 있다는 메시지를 표시합니다.
Could not connect to Redis at 127.0.0.1:6379
나는 그 기간 동안 내 서버를 모니터링하고 있으며 약 2G의 RAM을 알아냈습니다(Mysql, Redis 또는 NodeJS 프로세스에 대해 SWAP의 모든 바이트를 사용하지 않고. 연구에 시간을 보낸 후(따라갈 북쪽이 없음) , 나는 임시 포트에 대해 읽었습니다. 그래서 net.ipv4.ip_local_port_range
포트 범위를 늘리기 위해 매개변수를 조정하려고 했습니다 ( 32768 61000
에서 까지 10000 65000
조정). 결과는 끔찍했습니다! 내 웹 서버는 응답 시간을 평균 180~200ms에서 약 6000ms로 늘렸습니다. 서버 평균도 많이 올라갑니다(그러나 오류 메시지는 사라집니다!).
내 NodeJS 앱(모두)은 Socket.io를 사용하고 내 서버의 다른 포트에서 응답합니다. 문제에 대한 해결책이 무엇인지 알아 내려고 노력 중입니다. 포트 가용성 문제인가요? net.ipv4.ip_local_port_range 매개변수 조정이 서버 속도를 저하시키는 이유는 무엇입니까?
서버 구성:
- 우분투 서버 x64
- Intel Xeon E5520 쿼드 코어
- 8GB RAM
- 2x 1000GB SATA 2,5인치 5.400rpm(RAID 1)
- 2x 60GB SSD 2,5"(RAID1)(데이터베이스 내용은 모두 여기에 표시됩니다)
답변1
귀하의 질문이 최고 사용량이 많은 시간대에 서버를 가장 잘 모니터링하는 방법에 관한 것이라면, 최고 사용량이 많을 때는 수행하기 어려운, 모니터링에 도움이 되는 몇 가지 가벼운 도구를 찾아보겠습니다. 탑, ps, df항상 자르지 마세요.
나는 사용했다수집하다내 파티션, 메모리, CPU, Apache, mysql 및 기타 항목의 데이터 포인트를 캡처합니다. 데이터를 캡처하고 해당 데이터 포인트를 저장한 다음 데이터를 검색하려면 다른 도구가 필요합니다. 예를 들어데이터를 표시하기 위한 일부 웹 프런트 엔드.
그런 다음 문제를 해결하려면 서버를 공격하고 사용량이 많은 시나리오를 만드는 도구가 필요할 수 있습니다. Apache Benchmark(ab) 또는 Siege가 이를 위한 좋은 도구입니다.