Mysql 속도좀 빠르게 안되나요? 알려주세요 제발 흑흑
문제는 서버에 한 100명가령이 몰려도 웹접속시 게시판 열리는 속도가 버벅되고 CPU점유율도 무지 큽니다.
보통 78%이상입니다. 서버도 좋은데 왜그러죠? 알려주세요
시스템 사양
OS : 센트 4.4 커널 2.6.9-43SMP 32bit
CPU : 코어듀어 5130
RAM : ECC DDR2 4기가
HARD : 스카시(시리얼) 1만 RPM 레이드0
====================================
문제점은 TOP명령어를 했을때
CPU 점유율이 너무 큽니다.
top - 00:08:44 up 11 min, 1 user, load average: 7.62, 6.28, 3.39
Tasks: 443=>작업량도 별로없습니다. total, 8 running, 435 sleeping, 0 stopped, 0 zombie
Cpu(s): 69.6% us, => 시퓨점유율이 무지 큽니다. 8.8% sy, 0.0% ni, 19.4% id, 2.1% wa, 0.2% hi, 0.0% si
Mem: 4148836k total, 816532k used, 3332304k free, 26852k buffers
Swap: 8385920k total, 0k used, 8385920k free, 165288k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3785 mysql 16 0 473m 74m 3508 R 52 1.8 4:11.54 mysqld => 유난히 이놈 점유율이 큽니다. 접속된 시간도 길고
4435 mysql 16 0 474m 74m 3508 R 13 1.8 0:22.45 mysqld 왜근런가요?
4415 mysql 16 0 473m 74m 3508 S 12 1.8 0:36.06 mysqld
4440 mysql 15 0 474m 74m 3508 S 12 1.8 0:20.21 mysqld
4542 mysql 16 0 473m 74m 3508 R 12 1.8 0:03.92 mysqld
4492 mysql 15 0 473m 74m 3508 S 12 1.8 0:12.65 mysqld
4536 mysql 15 0 473m 74m 3508 S 12 1.8 0:05.97 mysqld
4374 mysql 15 0 473m 74m 3508 S 12 1.8 0:57.59 mysqld
=-=========
My.cnf 설정
===========
port = 3306
socket = /tmp/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 512M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 8M
read_buffer_size = 8M
thread_cache = 8
thread_concurrency = 8
max_connections = 400
net_buffer_length = 8K
read_buffer_size = 8M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 128M
query_cache_size = 128M
log-update
innodb_buffer_pool_size = 384M
innodb_additional_mem_pool_size = 20M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
[mysqldump]
quick
max_allowed_packet = 16M
no-auto-rehash [isamchk] key_buffer = 256M sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M [myisamchk] key_buffer = 256M sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M [mysqlhotcopy] interactive-timeout ============================================ My.cnf 설정 끝 물론 APM은 컴파일로 설치 한것입니다. 위와 같이 하였는데도 웹접속시 디비 연결속도가 많이 느립니다. 어찌해야 하는지요 고수님 제발 알려주세요~
우선 원인을 찾으셔야 합니다.
my.cnf 파일에 아래 라인을 우선 추가해 주시구요.
long_query_time 값은 단위가 초입니다.
3초 이상 걸리는 쿼리가 지정해준 로그 파일에 기록 되도록 합니다.
가장 좋은것은 어플리케이션에서 쿼리와 테이블 구조, 인덱스 등을 최적화(적은 자원으로 가장 빠르게) 해주는 것이지만
그게 불가능할 경우에는 슬로우 쿼리들을 보고 서버 설정을 적절하게 변경해 주는 것입니다.
우선 위의 설정으로 서버를 재시작 하시고 슬로우 쿼리들 중에 시간이 많이 걸리는 것들을 분석 하셔서 인덱스를 추가하거나 그게 불가능 하다면 여러 메모리 설정들을 적절한 값으로 변경해주면 속도 개선이 가능해 집니다.
현재의 로드 에버리지와 말씀해 주신 상황을 봤을때는 임시 테이블을 디스크에 만들어 쓸 가능성이 상당히 높아 보입니다.
혹은 인덱스 없이 풀스캔 하는 경우도 있을 수 있겠네요.
우선 기록된 슬로우 쿼리들과 스키마를 조사 하시고 다시 질문을 해주셔야 할것 같습니다.
-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.
일단
추천 1
컴파일 설치된 APM을 모두 다 지우고 APM 패키지 설치를 한다.
추천 2
MySQL 설치시 컴파일 설치를 하지 않고 MySQL AB에서 제공하는 MySQL 바이너리를 이용한다.
1 혹은 2를 거쳤는데 역시 뭔가 잘 안된다 하면 DB 및 프로그램을 다시 검토해야합니다.
====================여기부터 식은어치====================
안녕하세요. 저는 야동 초등학교 2학년 6반 11번입니다!! 제 컴퓨터에 리눅스를 깔아보고 싶습니다. 리눅스라는건 어제 처음 들어 보았습니다.
리눅스에서도 카트라이더는 되겠지요? 설마 안되나요? 안되면 왜 쓰나요? =3=33 리눅스에서는 카트라이더 캐릭터 머리가 너무 커서 못받아들이나요?
댓글 달기