안녕하세요.
늘 XE 게시판에서 많은 도움을 받고 있습니다. 감사합니다.
MYSQL의 설정 값에 관해 몇가지 궁금한 점이 있습니다.
1) 만약 my.cnf에 있는 값을 # 처리하게 되면 해당 값은 off로 설정되는 건가요? 아니면 mariadb의 초기값으로 자동으로 설정 되는건가요?
2) innodb_buffer_pool_size를 서버 전체 램의 50~70%로 설정하는 걸 권장하는 게시글을 매우 많이 보았습니다.
그런데 많이 설정한다고 좋은건 아니라는 것도 보았습니다. 많다가는 스왑? 이 발생할 수 있다는걸 보았는데요..
실제 innodb의 사용량은 200 ~ 300m 정도의 경우에도 사이즈를 1~2기가 설정해도 괜찮은건가요?
3) 설정을 바꾼 후에 어떻게 테스트를 해봐야 되는지 모르겠습니다.. 이게 설정이 빨라진건지, 오히려 느려진건지, 효과가 있는건지 없는건지 전혀 구분을 할 수가 없습니다 ㅠㅠ
webpagetest 나 Pingdom 을 이용해 홈페이지 속도를 테스트해봐도 거의 미미한 차이라 오차로 봐도 될 정도구요... 슬로우 쿼리나 로그 등을 봐도 오류로 남겨진게 없으니 어디를 개선해야 될지 모르겠습니다.
혹시 측정해볼 수 있는 방법이 있다면 알고 싶습니다.
읽어주셔서 감사합니다.
1. 초기값이요.
2. MySQL 외에는 특별히 돌아가는 것이 없는 서버라면 거의 모든 램을 MySQL에 할당해줘도 됩니다. 50~70%, 많게는 80%까지 권장하기도 하는데 모두 MySQL 단독으로 쓰는 서버라는 가정하에 얘기하는 거고요... 아파치도 돌아가고 PHP도 돌아가는 서버라면 당연히 램을 더 많이 남겨놓아야 합니다.
단, 스왑이 발생하는 것만으로 문제가 되지는 않습니다. 램이 펑펑 남아도는 서버에서도 스왑 사용량이 은근히 꽤 나올 때가 있어요. 이건 그냥 리눅스 커널이 알아서 하는 겁니다. 억지로 스왑을 안 쓰도록 하면 오히려 성능이 나빠지니 너무 신경쓰지는 마시기 바랍니다. 제가 관리를 대행하고 있는 서버 중 하나를 방금 확인해 보니 램 192기가 중 70기가 이상 남아 있는데도 스왑을 무려 8기가나 쓰고 있네요. 얘가 원래 좀 이래요. ㅎㅎ
3. 체감성능 차이도 없고 벤치마크 차이도 없다면 현 상태에서 더 튜닝하는 것은 의미가 없습니다. 그냥 남들이 권장하는 적당한 수준으로 해놓고, DB 용량이 많아지거나 접속자가 늘어나서 좀 불편이 느껴지면 그 때 다시 뜯어보시면 됩니다.
서버 튜닝이라고 하는 것의 절반 이상은 속도를 빠르게 하는 것이 아니라 더 많은 접속자를 동시에 처리할 수 있도록 하는 효과가 있습니다. 접속자가 1명일 때는 웬만하면 다 빨라요. 100명이 들어오고 1000명이 들어와도 그 컨디션을 유지할 수 있도록 해주는 것이 튜닝이예요. 심지어 1명 기준으로는 오히려 더 느려질 수도 있습니다.