ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

½â¾öÒ»¸öMySQL·þÎñÆ÷½ø³ÌCPUÕ¼ÓÃ100%µÄ¼¼Êõ±Ê¼Ç(Ò»)
2014-11-24 08:14:03 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:7´Î
Tags£º½â¾ö Ò»¸ö MySQL ·þÎñÆ÷ ½ø³Ì CPU Õ¼Óà 100% ¼¼Êõ ±Ê¼Ç

MYSQL CPU Õ¼Óà 100% µÄÏÖÏóÃèÊö
¡¡¡¡ÔçÉϰïÅóÓÑһ̨·þÎñÆ÷½â¾öÁË Mysql cpu Õ¼Óà 100% µÄÎÊÌâ¡£ÉÔÕûÀíÁËһϣ¬½«¾­Ñé¼Ç¼ÔÚÕâÆªÎÄÕÂÀï

¡¡¡¡ÅóÓÑÖ÷»ú(Windows 2003 + IIS + PHP + MYSQL )½üÀ´ MySQL ·þÎñ½ø³Ì (mysqld-nt.exe) CPU Õ¼ÓÃÂÊ×ÜΪ 100% ¸ß¾Ó²»Ï¡£´ËÖ÷»úÓÐ10¸ö×óÓÒµÄ database, ·Ö±ð¸øÊ®¸öÍøÕ¾µ÷Ó᣾ÝÅóÓѲâÊÔ£¬µ¼Ö mysqld-nt.exe cpu Õ¼ÓÃÆæ¸ßµÄÊÇÍøÕ¾A£¬Ò»µ©ÔÚ IIS Öн«´ËÍøÕ¾Í£Ö¹·þÎñ£¬CPU Õ¼ÓþͽµÏÂÀ´ÁË¡£Ò»ÆôÓã¬ÔòÂíÉÏÉÏÉý¡£

¡¡MYSQL CPU Õ¼Óà 100% µÄ½â¾ö¹ý³Ì

¡¡¡¡½ñÌìÔçÉÏ×Ðϸ¼ì²éÁËһϡ£Ä¿Ç°´ËÍøÕ¾µÄÆßÈÕÆ½¾ùÈÕ IP Ϊ2000£¬PageView Ϊ 3Íò×óÓÒ¡£ÍøÕ¾A ÓÃµÄ database ĿǰÓÐ39¸ö±í£¬¼Ç¼Êý 60.1ÍòÌõ£¬Õ¼¿Õ¼ä 45MB¡£°´Õâ¸öÊý¾Ý£¬MySQL ²»¿ÉÄÜÕ¼ÓÃÕâô¸ßµÄ×ÊÔ´¡£

¡¡¡¡ÓÚÊÇÔÚ·þÎñÆ÷ÉÏÔËÐÐÃüÁ½« mysql µ±Ç°µÄ»·¾³±äÁ¿Êä³öµ½Îļþ output.txt£º

d:webmysql> mysqld.exe --help >output.txt
¡¡¡¡·¢ÏÖ tmp_table_size µÄÖµÊÇĬÈ쵀 32M£¬ÓÚÊÇÐÞ¸Ä My.ini, ½« tmp_table_size ¸³Öµµ½ 200M:

d:webmysql> notepad c:windowsmy.ini
[mysqld]
tmp_table_size=200M

¡¡¡¡È»ºóÖØÆô MySQL ·þÎñ¡£CPU Õ¼ÓÃÓÐÇá΢Ͻµ£¬ÒÔǰµÄCPU Õ¼Óò¨ÐÎͼÊÇ 100% Ò»¸ùÖ±Ïߣ¬ÏÖÔÚÔòÔÚ 97%~100%Ö®¼äÆð·ü¡£Õâ±íÃ÷µ÷Õû tmp_table_size ²ÎÊý¶Ô MYSQL ÐÔÄÜÌáÉýÓиÄÉÆ×÷Óᣵ«ÎÊÌ⻹ûÓÐÍêÈ«½â¾ö¡£

¡¡¡¡ÓÚÊǽøÈë mysql µÄ shell ÃüÁîÐУ¬µ÷Óà show processlist, ²é¿´µ±Ç° mysql ʹÓÃÆµ·±µÄ sql Óï¾ä£º

mysql> show processlist;
¡¡¡¡·´¸´µ÷ÓôËÃüÁ·¢ÏÖÍøÕ¾ A µÄÁ½¸ö SQL Óï¾ä¾­³£ÔÚ process list ÖгöÏÖ£¬ÆäÓï·¨ÈçÏ£º

SELECT t1.pid, t2.userid, t3.count, t1.date
FROM _mydata AS t1
LEFT JOIN _myuser AS t3 ON t1.userid=t3.userid
LEFT JOIN _mydata_body AS t2 ON t1.pid=t3.pid
ORDER BY t1.pid
LIMIT 0,15
¡¡¡¡µ÷Óà show columns ¼ì²éÕâÈý¸ö±íµÄ½á¹¹ :

mysql> show columns from _myuser;
mysql> show columns from _mydata;
mysql> show columns from _mydata_body;
¡¡¡¡ÖÕÓÚ·¢ÏÖÁËÎÊÌâËùÔÚ£º_mydata ±í£¬Ö»¸ù¾Ý pid ½¨Á¢ÁËÒ»¸ö primary key£¬µ«²¢Ã»ÓÐΪ userid ½¨Á¢Ë÷Òý¡£¶øÔÚÕâ¸ö SQL Óï¾äµÄµÚÒ»¸ö LEFT JOIN ON ×Ó¾äÖУº

LEFT JOIN _myuser AS t3 ON t1.userid=t3.userid
¡¡¡¡_mydata µÄ userid ±»²ÎÓëÁËÌõ¼þ±È½ÏÔËËã¡£ÓÚÊÇÎÒΪ¸ø _mydata ±í¸ù¾Ý×Ö¶Î userid ½¨Á¢ÁËÒ»¸öË÷Òý£º

mysql> ALTER TABLE `_mydata` ADD INDEX ( `userid` )
¡¡¡¡½¨Á¢´ËË÷ÒýÖ®ºó£¬CPU ÂíÉϽµµ½ÁË 80% ×óÓÒ¡£¿´µ½ÕÒµ½ÁËÎÊÌâËùÔÚ£¬ÓÚÊǼì²éÁíÒ»¸ö·´¸´³öÏÖÔÚ show processlist ÖÐµÄ sql Óï¾ä£º

SELECT COUNT(*)
FROM _mydata AS t1, _mydata_key AS t2
WHERE t1.pid=t2.pid and t2.keywords = ¿×ȸ
¡¡¡¡¾­¼ì²é _mydata_key ±íµÄ½á¹¹£¬·¢ÏÖËüֻΪ pid ½¨ÁËÁË primary key, ûÓÐΪ keywords ½¨Á¢ index¡£_mydata_key ĿǰÓÐ 33 ÍòÌõ¼Ç¼£¬ÔÚûÓÐË÷ÒýµÄÇé¿ö϶Ô33ÍòÌõ¼Ç¼½øÐÐÎı¾¼ìË÷Æ¥Å䣬²»ºÄ·Ñ´óÁ¿µÄ cpu ʱ¼ä²Å¹Ö¡£¿´À´¾ÍÊÇÕë¶ÔÕâ¸ö±íµÄ¼ìË÷³öÎÊÌâÁË¡£ÓÚÊÇͬÑùΪ _mydata_key ±í¸ù¾Ý×Ö¶Î keywords ¼ÓÉÏË÷Òý:

mysql> ALTER TABLE `_mydata_key` ADD INDEX ( `keywords` )
¡¡¡¡½¨Á¢´ËË÷ÒýÖ®ºó£¬CPUÁ¢¿Ì½µÁËÏÂÀ´£¬ÔÚ 50%~70%Ö®¼äÕðµ´¡£

¡¡¡¡Ôٴε÷Óà show prosslist£¬ÍøÕ¾A µÄsql µ÷ÓþͺÜÉÙ³öÏÖÔÚ½á¹ûÁбíÖÐÁË¡£µ«·¢ÏÖ´ËÖ÷»úÔËÐÐÁ˼¸¸ö Discuz µÄÂÛ̳³ÌÐò£¬ Discuz ÂÛ̳µÄºÃ¼¸¸ö±íÒ²´æÔÚ×ÅÕâ¸öÎÊÌâ¡£ÓÚÊÇ˳ÊÖÒ»²¢½â¾ö£¬cpuÕ¼ÓÃÔٴνµÏÂÀ´ÁË¡£(2007.07.09 ¸½×¢£º¹ØÓÚ discuz ÂÛ̳µÄ¾ßÌåÓÅ»¯¹ý³Ì£¬ÎÒºóÀ´ÁíдÁËһƪÎÄÕ£¬Ïê¼û£ºÇ§Íò¼¶¼Ç¼µÄ Discuz! ÂÛ̳µ¼Ö MySQL CPU 100% µÄ ÓÅ»¯±Ê¼Ç mysql-cpu-100-optimize.htm">http://www.xiaohui.com/dev/server/20070701-discuz-mysql-cpu-100-optimize.htm)

¡¡½â¾ö MYSQL CPU Õ¼Óà 100% µÄ¾­Ñé×ܽá

Ôö¼Ó tmp_table_size Öµ¡£mysql µÄÅäÖÃÎļþÖУ¬tmp_table_size µÄĬÈÏ´óСÊÇ 32M¡£Èç¹ûÒ»ÕÅÁÙʱ±í³¬³ö¸Ã´óС£¬MySQL²úÉúÒ»¸ö The table tbl_name is full ÐÎʽµÄ´íÎó£¬Èç¹ûÄã×öºÜ¶à¸ß¼¶ GROUP BY ²éѯ£¬Ôö¼Ó tmp_table_size Öµ¡£ ÕâÊÇ mysql ¹Ù·½¹ØÓÚ´ËÑ¡ÏîµÄ½âÊÍ£º
tmp_table_size

This variable determines the maximum size for a temporary table in memory. If the table becomes too large, a MYISAM table is created on disk. Try to avoid temporary tables by optimizing the queries where possible, but where this is not possible, try to ensure temporary tables are always stored in memory. Watching the processlist for queries with temporary tables that take too long to resolve can give you an early warning that tmp_table_size needs to be upped. Be aware that memory is also allocated per-thread. An example where upping this worked for more was a server where I upped this from 32MB (the default) to 64MB with immediate effect. The quicker resolution of queries resulted in less threads being active at any one time, with all-round benefits for the server, and available memory.

¶Ô WHERE, JOIN, MAX(), MIN(), ORDER BY µÈ×Ó¾äÖеÄÌõ¼þÅжÏÖÐÓõ½µÄ×Ö¶Î,Ó¦¸Ã¸ù¾ÝÆä½¨Á¢Ë÷Òý INDEX¡£Ë÷Òý±»ÓÃÀ´¿ìËÙÕÒ³öÔÚÒ»¸öÁÐÉÏÓÃÒ»ÌØ¶¨ÖµµÄÐС£Ã»ÓÐË÷Òý£¬MySQL²»µÃ²»Ê×ÏÈÒÔµÚÒ»Ìõ¼Ç¼¿ªÊ¼²¢È»ºó¶ÁÍêÕû¸ö±íÖ±µ½ËüÕÒ³öÏà¹ØµÄÐС£±íÔ½´ó£¬»¨·Ñʱ¼äÔ½¶à¡£Èç¹û±í¶Ô

Ê×Ò³ ÉÏÒ»Ò³ 1 2 ÏÂÒ»Ò³ βҳ 1/2/2
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºMySql´æ´¢¹ý³Ì¨D2¡¢µÚÒ»¸öMySql´.. ÏÂһƪ£ºmysql promptÒ»¸öºÜºÃÓõÄÃüÁî

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

¡¤Java ¼¯ºÏ¿ò¼Ü - ²Ë (2025-12-27 02:19:36)
¡¤Java¼¯ºÏ¿ò¼Ü×îÈ«Ïê (2025-12-27 02:19:33)
¡¤ÎªÊ²Ã´°²×¿¿ª·¢ÒªÓÃJ (2025-12-27 02:19:30)
¡¤C/C++ ÀàÄ£°åÓëÄ£°å (2025-12-27 01:49:52)
¡¤CÓïÑÔ Ä£°å»¯£¼templ (2025-12-27 01:49:49)