한 번 의 데이터 가 약간 높 아서 웹 프로젝트 가 느 린 문제 & 해결

1971 단어
프로젝트 가 출시 된 후 사용자 가 점점 많아 졌 습 니 다. 어느 날 issue 가 발생 했 습 니 다. 사용자 의 방문 이 매우 느 립 니 다.
  • 먼저 구 조 를 소개 한다.
     haproxy/Nginx
         /     \
     node1     node2
       |        |
     redis     redis(slave)
       |         |
    mongodb mongodb (replecate)
  • 통계
  • 시스템 상태 가 어떤 상황 인지, 우선 외부 전체 현상의 압력 을 확정 하 는 것 은 다소 있 지만, 매우 느 리 지 는 않 을 것 이다.
  • check 네트워크
  • 머리 끝의 유량 을 보 세 요. 그렇게 높 지 않 아 요.(끝 에 가 까 운 피크 값 무시)
  • log

  • 그리고 node 노드 log 대응 시간 (8: 00PM) 의 log 를 추적 합 니 다.
    2015-08-04 19:35:50 +08:00: Mozilla/5.0 (Linux; U; Android 4.4.2; zh-CN; SM-G9006V Build/KOT49H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/10.5.1.597 U3/0.8.0 Mobile Safari/534.30" "referer:http://wap.10086.cn/index.html" "112.85.32.217 GET /wx/caiyun HTTP/1.1 200" response size : -1 need time 1053ms.
    페이지 를 가 져 오 려 면 데이터 베 이 스 를 필요 로 하지 않 습 니 다. 몇 초 걸 립 니까?
  • htop 검사 (메모리 가 낮 음)
  • pm2 검사
  • CPU 가 이상 하 게 높 아 요. 시간 대별 로 GA 랑 같이 봐 요.
    $ grep 'GET /wx/caiyun' /var/log/finance/applogs/koala-9031-out.log | grep "20:[0-9][0-9]:" | wc -l 3794 $ grep 'GET /wx/caiyun' /var/log/finance/applogs/koala-9031-out.log.1 | grep "20:[0-9][0-9]:" | wc -l 3045
    특별히 큰 파동 은 없다.
  • 이상 원인 검사 (침입?): less / var / log / syslogs 무과
  • 데이터베이스 mms 가 정상 으로 표 시 됩 니 다. 조회 가 느 리 지 않 습 니 다
  • 오류 로그 추가 분석
    node1 2015-08-04 21:10:53 +08:00: FATAL ERROR: JS Allocation failed - process out of memory ...
    node2 ... 2015-08-04 23:00:50 +08:00: FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory
    최종 발견 시 메모리 부족 으로 인 한
  • htop 정렬 mem 을 본 결과 mongodb 가 가장 많 고 node 가 그 다음
  • pm2 부분 노드 특 고 mem 점용 > 2G

  • 이 를 종합해 보면 mem 이 차지 하 는 비중 이 높 은 것 으로 추정 되 며, 몰 려 오 는 트 래 픽 은 정적 파일 을 읽 습 니 다. disk io mem 사이 에 메모리 가 부족 하여 자주 swap 합 니 다. 이 로 인해 대기 시간 이 매우 길 어 집 니 다. 또한 connection request 를 처리 하 는 데 많은 cpu 자원 이 소모 되 어 유 지 됩 니 다.
    최적화 조치 후속 업데이트.

    좋은 웹페이지 즐겨찾기