Extra Form
PHP PHP 5.x
CMS XpressEngine1

서버가 너무 느려서 문의해보니 서버에 문제가 있다고 하더라구요.

백업이 새벽2시에 시작되는데 12시간이 되도록 안끝나고 DB도 1~2틀에 한번꼴로 아파치 재시작을 해줘야 돌아가고 그래서 서버교체를 이번에 했는데 서버가 뻗지는 않는데 왠지 전보다 좀더 느려진 느낌이 나네요.

대신에 아직까지는 뻗지는 않는데

 

슈퍼캐시로 비로그인시에는 빠른데 로그인하면 페이지 넘어다니는게 좀 느려집니다.

 

기존 CPU 8코어 -> 16코어

메모리 8기가 -> 32기가

메모리가 적게쓰는듯 하네요. 버퍼설정이 잘못 되어있을까요?

 

my.cnf 열어봐도 

innodb_buffer 관련은 없는데 추가하면 되는걸까요?

 

서버교체로 서버에 대한 스트레스가 없어질줄 알았는데 왠지 끝나지 않네요.

 

myslq cpu 점유율이 60~250 에서 왔다 갔다 하더라구요.

 

 

mysql메모리.jpg

 

mysql메모리2.jpg

  • profile
    top를 제가 볼줄 몰라서 메모리릭이나 이런 부분은 다른 분들이 더 잘 설명해주실거라 생각하지만..
    여기에서 스피드를 확인할려면 실제로 서버에서 어떤 부분에서 느려지는지를 봐야합니다.

    실제로 로그인할때 특정 액션때문에 느려지는 경우도 있고, 아니면 로그인시 사용되는 복잡한 알고리듬을 가진 자료가 돌아가서 느려질수도 있고.. 원인은 다양하거든요.

    실제로 cpu점유율 기준으로 매번 100퍼를 넘어가지 않는 이상 메모리점유율이 50프로 이상 넘어가는게 아니라면 서버자체는 널널한거라 보면 됩니다.

    근데 top보니까 메모리가 너무 풀로 계속 차는것 같은데 메모리관리에 뭔가 문제가 있는거 아닌가 싶은데 동접이나 이런건 어떻게 되시는지요?
  • profile ?

    동접은 지금 130명정도 됩니다.
    보통 50~170명 정도 되는것 같아요.

     

    다른분들은 mysql 에서 50% 도 넘는것 같은데 저는 0.7~1.6% 되는것 같은데.. 

    그래서 메모리 할당이 안되어있다고 생각햇는데 제가 잘못본건가요?

  • profile

    CPU도 17%밖에 안 쓰고 있고, 메모리도 전체 32GB 중 5.2GB밖에 안 쓰고 있습니다. (top에 나오는 메모리 사용량은 무시하고, free의 두 번째 줄을 보면 됩니다.)

     

    서버를 업그레이드해도 설정이 그대로라면 이전 서버에서 쓰던 만큼밖에 못 쓰고 나머지는 그냥 낭비돼요. 예전에 쿼드코어 CPU가 처음 나왔을 때 대부분의 게임들이 1~2코어밖에 못 써서 전혀 도움이 되지 않던 시절 기억하시나요? 하드웨어 사양이 아무리 높아도 소프트웨어가 그걸 활용하지 않으면 소용없다는 거죠.

     

    innodb 설정이 보이지 않는다면 추가하시면 됩니다. 원래 없어요. 단, 설정만 바꾼다고 적용되는 것이 아니라 실제 저장된 DB를 innodb 방식으로 변환해야 합니다. 아무런 튜닝도 하지 않았다면 기본값은 myisam일 텐데, 이 방식은 동접이 몇십 명만 되어도 테이블 단위로 락이 걸려서 효율이 크게 떨어집니다.

     

    현재 CPU의 us:sy 비율이 3:1 정도인데, MySQL의 CPU 점유율이 대부분인 상황에서 sy가 이만큼 나오는 것 역시 락 때문일 가능성이 높습니다. innodb 버퍼 크기를 적당히 설정해 주고, 실제 DB도 innodb 방식으로 바꾸고, XE의 db.config.php에서도 DB 접속 방식을 mysqli_innodb로 바꾸시면 크게 개선될 수도 있습니다.

  • profile ?

    innodb 설정이 원래 없군요.

    phpMyAdmin에서 DB 보니깐 아래와 같이 myisam는 없고 innodb 라고 있던데 변환되어있는건가요? 서버새로 설치하면서 DB옮긴후 변환해준것 같은데 맞나요? 맞다면 mysql 설정에서 해당부분만 추가해주면 될까요?

     

    innodb.jpg

  • ? profile

    아뇨, 저건 별다른 설정을 하지 않아서 임의로 들어간 기본값일 뿐입니다.

    실제 데이터가 innodb 방식으로 저장되어 있는지 확인하려면 phpMyAdmin에서 테이블 목록을 보시면 됩니다. 오른쪽에 MyISAM 또는 InnoDB라고 분명하게 나올 거예요.

  • profile ?

    MyISAM 맞네요 ㅡㅜ