banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix mysqld used 100% CPU  XML
  [Question]   mysqld used 100% CPU 31/12/2010 16:55:28 (+0700) | #1 | 228245
smile_sad
Member

[Minus]    0    [Plus]
Joined: 15/08/2006 19:15:08
Messages: 96
Offline
[Profile] [PM]
Hi mọi người, em có 1 server chạy direct admin nhưng mysql thường dao động ở mức 50-100% cpu.Ai có kinh nghiệm về vụ này thì tư vấn giúp em.

Dưới đây là 1 số thông tin:

-mysql version:

Server version: 5.0.91-community MySQL Community Edition (GPL)
 


-my.cnf config:

# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /var/lib/mysql/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 384M
max_allowed_packet = 64M
table_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 4
max_connections = 500

#log-slow-queries = /var/log/mysql-slow-queries.log
#log-error = /var/log/mysql-error.log


[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[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
 


-top command:



-mytop command:



- Site em suy đoán truy vấn nhiều đến mysql là: http://nalueng.com

Nếu cần thêm thông tin gì khác mọi người cho em biết nhé. Cảm ơn mọi người đã quan tâm.
[Up] [Print Copy]
  [Question]   mysqld used 100% CPU 31/12/2010 20:19:12 (+0700) | #2 | 228266
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
- MySQL log có gì không bạn?
- show processlist; xem có gì?
- enable slow queries log rồi phân tích với mysqldumpslow xem
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   mysqld used 100% CPU 31/12/2010 20:36:31 (+0700) | #3 | 228270
smile_sad
Member

[Minus]    0    [Plus]
Joined: 15/08/2006 19:15:08
Messages: 96
Offline
[Profile] [PM]
Hi anh quanta, em đã thử edit my.cnf và enable mysqld log và slow queries log nhưng khi restart mysql thì log file không được tạo ra.

show processlist cũng chỉ là output tương tự như mytop utility ở trên anh à.
[Up] [Print Copy]
  [Question]   mysqld used 100% CPU 31/12/2010 22:44:21 (+0700) | #4 | 228285
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

smile_sad wrote:
em đã thử edit my.cnf và enable mysqld log và slow queries log nhưng khi restart mysql thì log file không được tạo ra.
 

Bạn sửa thế nào vậy? Đã có long_query_time chưa?
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   mysqld used 100% CPU 31/12/2010 23:11:02 (+0700) | #5 | 228294
smile_sad
Member

[Minus]    0    [Plus]
Joined: 15/08/2006 19:15:08
Messages: 96
Offline
[Profile] [PM]
Em thêm vào my.cnf:

[mysqld]
.....
.....
.....
log-slow-queries = /var/log/mysql/mysql-slow.log
long_query_time = 1 



Sau đó restart mysqld.
[Up] [Print Copy]
  [Question]   mysqld used 100% CPU 31/12/2010 23:25:45 (+0700) | #6 | 228299
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Thư mục mysql đã tồn tại trong /var/log chưa và nó được owned bởi ai? Để đơn giản, chỉ cần chỉ định tên file thôi (không cần đường dẫn tuyệt đối), sau đó tìm trong datadir thì sẽ thấy.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   mysqld used 100% CPU 31/12/2010 23:31:31 (+0700) | #7 | 228302
smile_sad
Member

[Minus]    0    [Plus]
Joined: 15/08/2006 19:15:08
Messages: 96
Offline
[Profile] [PM]
ok anh. Đây là 1 vài slow log


tail -f /var/log/mysql/mysql-slow.log
# Query_time: 4 Lock_time: 0 Rows_sent: 81212 Rows_examined: 477199
SELECT DISTINCT p.* FROM esb2b_phone p, esb2b_phone_categories pc WHERE p.es_cid=pc.es_id AND p.es_active='1' AND (p.es_name_thai LIKE '%à¸%' OR p.es_name_eng LIKE '%à¸%' AND p.es_cid='3' );
# Time: 110101 0:24:03
# User@Host: nalueng_main[nalueng_main] @ localhost []
# Query_time: 10 Lock_time: 0 Rows_sent: 20 Rows_examined: 479659
SELECT DISTINCT p.* FROM esb2b_phone p, esb2b_phone_categories pc WHERE p.es_cid=pc.es_id AND p.es_active='1' AND (p.es_name_thai LIKE '%à¸%' OR p.es_name_eng LIKE '%à¸%' AND p.es_cid='3' ) ORDER BY es_update_on DESC LIMIT 2440, 20;
# Time: 110101 0:24:06
# User@Host: nalueng_main[nalueng_main] @ localhost []
# Query_time: 5 Lock_time: 0 Rows_sent: 45964 Rows_examined: 406703
SELECT DISTINCT p.* FROM esb2b_phone p, esb2b_phone_categories pc WHERE p.es_cid=pc.es_id AND p.es_active='1' AND (p.es_name_thai LIKE '%ห%' OR p.es_name_eng LIKE '%ห%' AND p.es_cid='8' );
# Time: 110101 0:24:13
# User@Host: nalueng_main[nalueng_main] @ localhost []
# Query_time: 7 Lock_time: 0 Rows_sent: 20 Rows_examined: 431243
SELECT DISTINCT p.* FROM esb2b_phone p, esb2b_phone_categories pc WHERE p.es_cid=pc.es_id AND p.es_active='1' AND (p.es_name_thai LIKE '%ห%' OR p.es_name_eng LIKE '%ห%' AND p.es_cid='8' ) ORDER BY es_update_on DESC LIMIT 24520, 20;
# Time: 110101 0:24:17
# User@Host: nalueng_main[nalueng_main] @ localhost []
# Query_time: 10 Lock_time: 0 Rows_sent: 61731 Rows_examined: 438237
SELECT DISTINCT p.* FROM esb2b_phone p, esb2b_phone_categories pc WHERE p.es_cid=pc.es_id AND p.es_active='1' AND (p.es_name_thai LIKE '%à¸%' OR p.es_name_eng LIKE '%à¸%' );
# Time: 110101 0:24:19
# User@Host: nalueng_main[nalueng_main] @ localhost []
# Query_time: 2 Lock_time: 0 Rows_sent: 20 Rows_examined: 482137
SELECT DISTINCT p.* FROM esb2b_phone p, esb2b_phone_categories pc WHERE p.es_cid=pc.es_id AND p.es_active='1' AND (p.es_name_thai LIKE '%à¸%' OR p.es_name_eng LIKE '%à¸%' ) ORDER BY es_update_on DESC LIMIT 43880, 20;
# Time: 110101 0:24:42
# User@Host: nalueng_main[nalueng_main] @ localhost []
# Query_time: 18 Lock_time: 0 Rows_sent: 172482 Rows_examined: 659739
SELECT DISTINCT p.* FROM esb2b_phone p, esb2b_phone_categories pc WHERE p.es_cid=pc.es_id AND p.es_active='1' AND (p.es_name_thai LIKE '%ส%' OR p.es_name_eng LIKE '%ส%' AND p.es_cid='3' );
# Time: 110101 0:24:55
# User@Host: nalueng_main[nalueng_main] @ localhost []
# Query_time: 14 Lock_time: 0 Rows_sent: 117465 Rows_examined: 549705
SELECT DISTINCT p.* FROM esb2b_phone p, esb2b_phone_categories pc WHERE p.es_cid=pc.es_id AND p.es_active='1' AND (p.es_name_thai LIKE '%à¸%' OR p.es_name_eng LIKE '%à¸%' AND p.es_cid='3' );
# Time: 110101 0:24:59
# User@Host: nalueng_main[nalueng_main] @ localhost []
# Query_time: 4 Lock_time: 0 Rows_sent: 20 Rows_examined: 558225
SELECT DISTINCT p.* FROM esb2b_phone p, esb2b_phone_categories pc WHERE p.es_cid=pc.es_id AND p.es_active='1' AND (p.es_name_thai LIKE '%à¸%' OR p.es_name_eng LIKE '%à¸%' AND p.es_cid='3' ) ORDER BY es_update_on DESC LIMIT 8500, 20;
# Time: 110101 0:25:09
# User@Host: nalueng_main[nalueng_main] @ localhost []
# Query_time: 27 Lock_time: 0 Rows_sent: 20 Rows_examined: 659759
SELECT DISTINCT p.* FROM esb2b_phone p, esb2b_phone_categories pc WHERE p.es_cid=pc.es_id AND p.es_active='1' AND (p.es_name_thai LIKE '%ส%' OR p.es_name_eng LIKE '%ส%' AND p.es_cid='3' ) ORDER BY es_update_on DESC LIMIT 0, 20;

 
[Up] [Print Copy]
  [Question]   mysqld used 100% CPU 01/01/2011 00:26:38 (+0700) | #8 | 228305
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Bạn có để ý thấy Rows_examined khá lớn và có những queries khá lâu không? Bạn thử dùng EXPLAIN để phân tích các queries đó và tìm hiểu một chút về Indexes xem.

PS: nên tăng query_time lên 10, 15s không log lại đầy ứ ự đấy.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   mysqld used 100% CPU 01/01/2011 07:39:55 (+0700) | #9 | 228307
smile_sad
Member

[Minus]    0    [Plus]
Joined: 15/08/2006 19:15:08
Messages: 96
Offline
[Profile] [PM]
ok các bước còn lại em sẽ làm và post kết quả lên sau. Cảm ơn anh quanta đã giúp đỡ.
[Up] [Print Copy]
  [Question]   mysqld used 100% CPU 01/01/2011 22:03:39 (+0700) | #10 | 228389
myquartz
Member

[Minus]    0    [Plus]
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
[Profile] [PM]
Query mà có mấy cái LIKE %xxx% kia và lại có cả OR thì tớ sợ lắm. Câu đó kiểu gì cũng tốn CPU hoặc IO vì nó phải lấy cả table ra so sánh.
Nên ép chủ cái trang có câu đó sửa lại, không được LIKE mà phải là = (hoặc hạn chế like), hoặc chí ít thì LIKE "prefix%" chứ ko được LIKE "%xx%".
[Up] [Print Copy]
  [Question]   mysqld used 100% CPU 02/01/2011 15:09:47 (+0700) | #11 | 228427
smile_sad
Member

[Minus]    0    [Plus]
Joined: 15/08/2006 19:15:08
Messages: 96
Offline
[Profile] [PM]
@myquartz: bạn nhận xét rất chính xác. Mình đã index lại dữ liệu của 2 bảng đó thì load average giảm đáng kể. mysql cũng khả quan hơn tuy nhiên cái statement phía trên với việc sử dụng phát biểu LIKE kiểu như vậy ngốn CPU rất cao.

Một link ref cho mọi người:

http://www.ovaistariq.net/479/mysql-query-optimization-tip-1-avoid-using-wildcard-character-at-the-start-of-a-like-pattern/
 
[Up] [Print Copy]
  [Question]   mysqld used 100% CPU 05/01/2011 13:05:19 (+0700) | #12 | 228715
[Avatar]
zeno
Elite Member

[Minus]    0    [Plus]
Joined: 20/07/2004 03:57:09
Messages: 124
Location: HVA
Offline
[Profile] [PM]
Việc bạn cung cấp hosting thì hơi khó vì mỗi ông code một kiểu rồi vứt lên server (query gì mà 13 giây còn chưa xong ) hành hạ tài nguyên server của bạn. Mình nghĩ nên tạo một số policy như 1 query quá lâu hoặc cpu quá cao thì hệ thống sẽ kill cái process đó nhằm đảm bảo tính ổn định của server.
[Up] [Print Copy]
  [Question]   mysqld used 100% CPU 12/01/2011 09:04:39 (+0700) | #13 | 229284
khanga6tm
Member

[Minus]    0    [Plus]
Joined: 28/04/2007 17:38:37
Messages: 34
Offline
[Profile] [PM]

zeno wrote:
Việc bạn cung cấp hosting thì hơi khó vì mỗi ông code một kiểu rồi vứt lên server (query gì mà 13 giây còn chưa xong ) hành hạ tài nguyên server của bạn. Mình nghĩ nên tạo một số policy như 1 query quá lâu hoặc cpu quá cao thì hệ thống sẽ kill cái process đó nhằm đảm bảo tính ổn định của server.
 


Em chơi MySQL trên Ubuntu còn bị trò này mới thâm cơ. CPU của em 4 core mà nó chỉ dùng đúng 1 core cuối thôi, sau khi nó ngốn hết 100% CPU thì đừng đơ ở đó, stop MySQL đi rồi mà hệ thống vẫn không trả lại tài nguyên thế mới hài, sau khi restart nó lại ngốn cái core cuối ấy tiếp. Từng có thời gian em đặt cron 2 min là restart MySQL smilie
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|