사이트 속도
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 197 조회
- 목록
본문
현재 동접자는 정확히 알 수 없지만 일방 문자는 3~4만 정도이며 포인트를 많이 활용하고 있습니다.
서버 사양은 48v CPU 96GB메모리 400GB SSD 11TB Transfer을 이용하고 있습니다.
사이트의 전반적인 속도도 그렇지만 특히 게시 글에 접속 할 때면 엄청 느려집니다.
젤 느린 때는 40초 이상도 됩니다.
하루 종일 느린 것은 아닙니다. 접속자가 별로 없는 새벽 시간에는 메인과 카테고리는 상당히 빠릅니다.
하지만 접속자가 별로 없는 시간에도 게시글은 느릴 때는 정말 많이 느립니다.
정말 많이 검색해보고 별의별 시도를 다 해봤지만 아직도 이유를 찾지 못하고 있습니다.
일단 포인트를 사용하는 부분에 대해서는 저번에 포인트 정리를 해줌으로써 속도가 좀 빨라지는 듯 하더니 다시금 속도가 느려집니다.
(포인트에 대한 부분 때문에 느려지는 것도 있다는건 분명 알고 있지만 궁극적인 문제는 아닌것 같더라구요)
DB는 innodb 를 이용하고 있으며
full text search를 이용하고 있습니다. (검색은 상당히 빠릅니다!!)
동시접속자 worker 를 이용하고 있습니다.
서버 사양에 맞게 my.cnf 파일에서도 buffer_size 등등 여러가지 설정을 변경해주었습니다.
skip-external-locking
skip-host-cache
skip-name-resolve
등등도 쓰고 있습니다.
슬로우쿼리에 대한 부분은 이상한 것이
예를 들어 롱 쿼리를 10초로 해주면 아무것도 못잡다가 1초로 해야만 포인트에 대한 부분만 찍힙니다.
5초 10초 20초 30초 해줄 때는 아무것도 잡히질 않습니다. 실제 사이트에서는 40초 이상걸리는것들이 상당히 많은데요
롱쿼리를 5초로 해주고 mysql 에서 sleep 명령어로 7초를 해주면 이건 또 잡긴합니다.
이 부분은 아직 해결 못한 상태입니다.
사이트에서 개발자 모드로 네트워크를 보면 boarb.php 이부분만 상당히 느립니다. 40초 정도 걸립니다.
이밖에 여러가지를 더 해주었지만 아무런 반응이 없습니다 오히려 더 느려지는 듯한 느낌도 받습니다.
g5_member 에 대해 테이블 복구와 테이블 최적화를 실행해주었지만 별다른 반응이 없습니다.
어떤 부분을 더 체크 해봐야 할까요?
답변 :
1. 음... 평균은 의미없습니다. 피크일 때 몇 명이 접속하고 서버 자원사항이 어떻게 되는지가 중요합니다. 하루 만명이 시간당 평균적으로 접속하는 것 하고, 저녁 1시간에 몰려 접속하는 것은 아주 다른 문제입니다. 저녁 1시간에 몰려 접속하는 것이면 하루 20만명 접속하는 것이니깐요.
2. 그리고 php는 메모리 누수문제가 있어서, 한번 자원 사용량 80%까지 올라가면(보통 이정도를 max로 설정), 재부팅 전에는 안 빠집니다. 메모리 누수로 이미 메모리를 다 잡아 먹은 상태라서... 그래서 사용자가 없는데도 느린 것 입니다. 참고로 php 8 버전도 php 8.1, 8.2가 메모리 누수가 심각해 가장 최신인 8.1.18 과 8.2.5에서 해결되었다고 하는데, 이것도 봐야 압니다.
3. 마지막으로 현재 php 메모리 누수 등 문제로 인해 알려진 것으로는 크게 3가지 입니다.
- 알림 실시간 체크 부분... php 계속 돌아가니... 사용안함 설정
- 조회수 새글 알림에 체크 부분 : /bbs/board.php 파일 165라인 새글DB 업데이트 부분 주석처리..
- 포인트 합계 부분 : 포인트 건수가 문제가 아니라 포인트가 등록되면 매번 합계를 다시 구하기 때문에 여기서 잡아 먹음. 단수 데이터 insert 는 몇천만 건이 되더라도 문제없음. 이 합계 구하는데, 시간을 줄이고 싶어서 건수 줄이는 것이니... 그러니 근본적으로 해결하려면 일부 포인트 오차는 인정하고 단순 합으로 가도록 수정하는게 나을 수 있음
- 하나 더하면 캐시문제...
4. 무엇보다 중요한 것은 따로 설치하신 프로그램이나 사용 중인 스킨들입니다. 그런 자료들은 과부하 테스트 등 해 본 자료가 아닐꺼라서 모릅니다. 쉽게 아미나에서 부하걸리는 것은 조회수 하나 빼고는 그누 부하랑 똑같은데, 그누 해결법으로 해서 해결 안된다면 따로 사용하시는 자료 때문에 그렇습니다. 실시간으로 돌아가서 메모리 잡아먹는다던지, 쿼리 무한으로 돌린다던지...