±¾ÎÄÏòÄú½éÉÜÈçºÎͨ¹ý×îÉٵŤ×÷ÓÅ»¯ WebSphere Application
Server V6 ÒÔ»ñµÃ×î´óµÄÐÔÄܸÄÉÆ¡£Ëü²àÖØÓÚʹÓà wsadmin ºÍ Jython ½øÐÐÃüÁîÐÐÓÅ»¯£¬¶ø²»ÊÇʹÓÃ
GUI ¼¼Êõ¡£Í¨¹ýÓ¦ÓÃһЩ¸ù¾Ý¾Ñé»ñµÃµÄ·½·¨£¬Äܹ»Í¨¹ý×îÉٵĹÜÀí¹¤×÷ʹ WebSphere Application
Server ×î¼ÑµØÀûÓÿÉÓõÄÓ²¼þ×ÊÔ´¡£ÕâÀïÃèÊöµÄ¼¼ÊõÊÊÓÃÓÚÈκÎÐÔÄÜÓÅ»¯ÎÊÌ⡪¡ªÖ»ÓÐÄ³Ð©ÌØ¶¨¾Ñé·½·¨ÊÇÌØ¶¨ÓÚ
WebSphere µÄ¡£
ÒýÑÔ
Èç¹ûÄúÊÇÕâÑùÒ»¸öÈË£ºÆô¶¯²¢ÔËÐÐ WebSphere Application
Server ºó¾Íæ×Å´¦ÀíÆäËûÊÂÇ飬¶øÃ»ÓÐʱ¼äÑо¿ÓëÐÔÄÜÓÅ»¯Ïà¹ØµÄÎĵµ£¨Çë²ÎÔIJο¼×ÊÁÏ£©¡£ÄÇô£¬ÄúÀ´¶ÔµØ·½ÁË¡ª¡ª±¾ÎÄÖ¼ÔÚ°ïÖúÄúÈ·¶¨¿ÉÄÜ´ø¸øÄú
80% ÐÔÄܸÄÉÆµÄ 20% µÄÐÔÄܸüС£±¾ÎÄÖØµã½éÉÜ WebSphere Application Server
base ²úÆ·¡ª¡ªÏÂһƪÎÄÕ½«½éÉÜ WebSphere Application Server Network
Deployment¡£
Ó¦ÓóÌÐò»ù´¡ÉèÊ©ÖеÄÓÅ»¯´øÀ´µÄÐÔÄܸÄÉÆ²»ÄÜÓëÐÞ¸´±àµÃºÜ²îµÄÓ¦ÓóÌÐòËù»ñµÃµÄÏÔÖøÐÔÄܸÄÉÆÍ¬ÈÕ¶øÓï¡£
һЩӦÓóÌÐòÔÚÆäÊý¾Ý¿â²éѯÖÐûÓÐ where ×Ӿ䣻һЩӦÓóÌÐòµ÷ÓÃÁË wait() forever£»Ò»Ð©Ó¦ÓóÌÐò¹¹½¨ÁËËÀËøÉú³ÉÆ÷£»Ò»Ð©Ó¦ÓóÌÐòÓµÓÐÅÓ´óµÄ
HTTPSession£»Ò»Ð©Ó¦ÓóÌÐòÖ´ÐÐÁË select * ²¢ÊÔͼ½«ËùÓÐÊý¾Ý»º´æµ½Öмä²ãÖУ¨ÓÐǧÕ×µÄÊý¾ÝÒ²ÄÇô¸É£¡£©¡£±¾ÎĽ«ÏòÄú½éÉÜһЩºÜºÃµÄÓÅ»¯¼¼ÇÉ£¬µ«Ö»ÓÐÓ¦ÓóÌÐò±¾Éí¿ÉÒÔ´øÀ´ÕæÕýÏÔÖøµÄ½á¹û¡£Êǵģ¬ÕâÒâζ×ÅÓ¦ÓóÌÐò¿ª·¢ÈËÔ±ºÍ·þÎñÆ÷¹ÜÀíÔ±±ØÐ붨ÆÚÏ໥¹µÍ¨£¡
ÐÔÄܲâÊÔ»·¾³
ÕÒ³ö±¡Èõ»·½Ú
ÄúÐèÒªÒ»¸ö¾¡¿ÉÄÜ·´Ó³Éú²ú»·¾³µÄ²âÊÔ»·¾³¡£Èç¹ûÄúʹÓõÄÊǼ¸Ç§Õ×µÄÊý¾Ý²Ö¿â£¬Ôò²âÊÔϵͳ¿ÉÄÜÐèҪСһЩ¡£µ«ÊÇÐÔÄܺÍÉú²ú»·¾³Ö®¼äµÄÈκβîÒì¶¼¿ÉÄÜÒýÆð¸ß¿ªÏúµÄÍÆ¶Ï´íÎó¡£´óÐÍÆóҵûÓÐÈκÎÀíÓÉÐû³ÆËüÃÇÎÞ·¨ÌṩͬµÈ¹æÄ£µÄÐÔÄܲâÊÔ·þÎñÆ÷¡£Ð¡²âÊÔ»·¾³¿ÉÄÜÎÞ·¨±©Â¶Ä³Ð©·½Ã棨ÀýÈçËø²Ù×÷¡¢ÈÕÖ¾¼Ç¼¡¢HTTPSessions¡¢À¬»ø»ØÊÕ¡¢Á¬½Ó³Ø¡¢CPU¡¢ÄÚ´æ¡¢Êý¾Ý¿â¡¢ÍøÂç»òÓ¦ÓóÌÐò£©ÏÖÓеÄÎÊÌâ¡£
²âÊÔ¹¤¾ß¡ª¡ªÕÒ×¼·½Ïò
´´½¨Êµ¼Ê²âÊÔ¹¤¾ßÊÇÓÐЧÓÅ»¯µÄ¹Ø¼ü²½Öè¡£Èç¹ûÄúÔÚ²âÊÔ·þÎñÆ÷ÉÏÊ©¼ÓµÄ¹¤×÷¸ºÔØÎÞ·¨·´Ó³³öÕ¾µãÖÐʵ¼Ê·¢ÉúµÄÇé¿ö£¬ÔòÄúµÄÓÅ»¯½«ÎÞ·¨½â¾öÎÊÌ⣡Óкܶ࿪·ÅÔ´´úÂëµÄÈí¼þ²âÊÔ²úÆ·ºÍÉÌÒµÈí¼þ²âÊÔ²úÆ·£¨Çë²ÎÔÄÏÂÃæµÄ²Î¿¼×ÊÁÏ£©¡£Äú¿ÉÒÔͨ¹ý²é¿´ÏÖÓеķþÎñÆ÷ÈÕÖ¾À´Á˽âʵ¼Ê²âÊÔ³¡¾°¡£µ±ÒýÈëеÄÓ¦ÓóÌÐòʱ£¬ÕâЩÀúÊ·¼Ç¼¶ÔÄúÊÇûÓаïÖúµÄ£¬ËùÒÔ±ØÐëÓÐ×îºÃµÄÉèÏë¡£
²âÊÔ¹¤¾ß¡ª¡ª´òÆÆ¼«ÏÞ
ÓÅ»¯Ö¼ÔÚ·¢ÏÖÎÊÌâ²¢ÐÞ¸´ËüÃÇ¡£Èç¹û²âÊÔûÓÐʹ·þÎñÆ÷¸ºÔØ´ïµ½ÁÙ½çµã£¬ÔòÓÐЩÎÊÌ⽫¼ì²â²»µ½£¬ËùÒÔҪȷ±£·þÎñÆ÷µÄ¸ºÔس¬¹ýÄúÔ¤ÆÚµÄ×î¸ß·åÁ÷Á¿¡£ÕâÑù×ö½«Ê¹Äú»ñµÃ²âÊÔ¹¤¾ß¶¨ÒåÖеÄÎó²î·ù¶È¡£ÓÅ»¯×î²îÇé¿öϵĸºÔØ£¬ÕâÑùÄúÔÚͶÈëÉú²úʱ¾ÍÒѾӵÓиü¸ß¸ºÔØÏµÄÐÔÄÜÖµ¡£ÓÚÊÇ£¬Äú½«ÖªµÀÄúµÄ°²È«·ù¶ÈÓжà´óÒÔ¼°Ê²Ã´Ê±ºòÐèҪΪ·Ç³£Á÷ÐеÄÓ¦ÓóÌÐò½øÐÐÀ©ÈÝ¡£Ó¦ÓóÌÐòµÄ´´½¨Õß²»Ó¦¸Ã¿ª·¢²âÊÔ¹¤¾ß£¬ÒòΪËûÃÇÖªµÀ¼Ù¶¨µÄ±ß½çÌõ¼þ£¬»áÓÐÒâ±ÜÃâ´´½¨³¬³öÕâЩ±ß½çµÄ²âÊÔÓÃÀý¡£Éú²ú¹¤×÷¸ºÔØ¿ÉûÓÐÕâôÓÑÉÆ£¡
һЩ²âÊÔÌṩµÄÓû§ÊýÊÇÊʶÈÔö³¤µÄ£¬´Ó¶øÉú³ÉÏ൱ÏßÐÔ»¯µÄÐÔÄÜÇúÏßͼ¡£µ«ÊÇʵ¼ÊµÄÓû§µ½´ïÂÊÍùÍùÊǼ¯Èº»¯ÇÒ²»¹æÔòµÄ£¬ËùÒÔÔÚͶÈëÉú²ú»·¾³Ö®Ç°ÐèÒª¶ÔÕâЩÌõ¼þ½øÐвâÊÔ¡£
Èç¹ûÄúµÄ²âÊÔ¼ÆËã»úÉÏÓÐÆäËûÓû§£¬ÔòËûÃDZØÐëÖªµÀÄúµÄ²âÊԼƻ®¡ª¡ª·ñÔòËûÃÇ¿ÉÄÜÈÏΪËûÃÇÔâÓöijÖÖÑÏÖØµÄÎÊÌ⣬ÀýÈç¾Ü¾ø·þÎñ¹¥»÷¡£
±¾ÎÄËùʹÓõIJâÊÔ»·¾³
±¾ÎÄÖеĽá¹ûÀ´×Ô IBM Åàѵ¼Æ»®£¬ËüʹÓà WebSphere Trade6
ÄÚ²¿»ù×¼À´ÑµÁ·Ñ§Ô±ÔÚ¸ßѹ¾ºÕù»·¾³Ï½øÐÐÐÔÄÜÓÅ»¯¡£¸Ã²âÊÔ»·¾³Ê¹Óà Red Hat Enterprise Linux
V3¡¢WebSphere Application Server V6.0.1¡¢DB2 V8.2 ºÍ Apache
JMeter¡£ÕâЩ²úÆ·½«°²×°ÔÚ VMWare V5.0 Ï¡£Á½Ì¨ IBM ThinkPad ±ãЯʽ¼ÆËã»úʹÓÃÒÔÌ«Íø½»²æµçÀÂÏàÁ¬½Ó¡£Ó¦Ó÷þÎñÆ÷ÔËÐÐÔÚһ̨¼ÆËã»úÉÏ£¬¶ø²âÊÔ¹¤¾ßºÍÊý¾Ý¿âÔËÐÐÔÚÁíһ̨¼ÆËã»úÉÏ¡£
ΪÁ˼ò»¯ÐÔÄÜÓÅ»¯»·¾³ºÍ½µµÍ³öÏÖ´íÎóµÄ¿ÉÄÜÐÔ£¬ÄúÓ¦¸ÃʹÓà shell ½Å±¾À´Æô¶¯²»Í¬µÄ×é¼þ¡£ÏÂÃæµÄÇåµ¥ 1
ÏÔʾÁËÒ»¸öÃûΪ go_trade6 µÄʾÀý½Å±¾¡£¸Ã½Å±¾´Ó¶Ëµ½¶ËÆô¶¯»ù×¼£¬°üÀ¨ WebSphere Application
Server¡¢DB2 ·þÎñÆ÷¡¢JMeter ³ÌÐòºÍÓÃÓÚ¼à¿Ø top ºÍ vmstat µÄ xterm¡£
Çåµ¥ 1. Æô¶¯²âÊÔ»·¾³ËùÓÐ×é¼þµÄ½Å±¾
xterm -exec top &xterm -exec vmstat 3 &su - -c db2start db2inst1#su - -c oninit informix startWASmozilla
&# start test harnesscd /root/trade6/jakarta-jmeter-2.0.2/bin/opt/IBMJava2-141/bin/java ApacheJMeter.jar -t tradebuysell.jmx
&# read wastecpu.c wastecpu & wastecpu & export PATH=$PATH:/opt/IBM/WebSphere/AppServer/bin |
»·¾³ÎÀÉú
»ñµÃÐÔÄÜ»ù×¼Êý
ÔÚ½øÐÐÈκθü¸Ä֮ǰ£¬»ñµÃÐÔÄÜ»ù×¼ÊýÊǺÜÖØÒªµÄ£¬ÒòΪֻÓÐÓë»ù×¼½øÐбȽϲÅÄÜÈ·ÇÐ˵Ã÷ϵͳ±ä¿ì»¹ÊDZäÂý¡£ÔÚÔËÐлù×¼²âÊÔ»òÆäËûÐÔÄܲâÊÔʱ£¬±ØÐë½÷É÷µØ¿ØÖÆÏµÍ³ÉÏµÄÆäËû¹¤×÷¡£ÀýÈ磬Èç¹ûÄúµÄÊý¾Ý¿âÓÃÓÚÊÂÎñ´¦ÀíºÍ·±Öصľö²ßÖ§³Ö
(DSS) ²éѯ£¬Ôò¿ÉÒÔÈ·¶¨·ÇÔ¤¶¨µÄ DSS ²éѯ½«ÎþÉüÄúµÄÊÂÎñÐÔÄÜ¡£Èç¹ûÄúÔÚ²»ÖªµÀ DSS »áÓиÉÈÅʱÊÔͼÓÅ»¯´Ë»·¾³£¬Ôò½«´íÎóµØµÃ³ö½áÂÛ£ºÏµÍ³µÄÐÔÄÜ¡°ÒÑÓÅ»¯£¬µ«²»¿ÉÔ¤²â¡±¡£ÊµÑéʾÀýµÄÐÔÄÜ»ù×¼£¨Ê¹ÓÃ
JMeter£©ÈçÏÂÃæµÄͼ 1 Ëùʾ¡£¿ÉÒÔͨ¹ý Run ²Ëµ¥ÏÂÀÁбíÆô¶¯Ò»Ïî²âÊÔ»òÇå³ýÏÈǰµÄËùÓÐÊý¾ÝÒÔ½øÐÐÏÂÒ»´Î²âÊÔ¡£

ͼ 1. ʹÓà JMeter µÄÐÔÄÜ»ù×¼£º37
ºÁÃëÏìӦʱ¼ä
»ù×¼ÐÔÄܱíÃ÷ƽ¾ùÏìӦʱ¼äΪ 37.6 ºÁÃ루Çë¿´ JMeter Ö¡µÄÓÒϽǣ©¡£Äú¿ÉÒÔ¶Ô²»Í¬µÄ¶ÈÁ¿½øÐÐÓÅ»¯£¬ÀýÈçÍÌÍÂÁ¿¡¢ÖÐÖµÏìӦʱ¼ä¡¢ÏìӦʱ¼äÆ«²î»òÆäËûijÖÖÓÅ»¯Ä¿±ê¡£Ê×ÏÈÈ·¶¨ÓÅ»¯Ä¿±ê£¬È»ºóŪÇå³þÈçºÎÓÅ»¯ÏµÍ³²ÅÄÜʵÏÖ´ËÄ¿±ê¡£
Èç¹û¹¤×÷¸ºÔغܴó¶øÇÒϵͳÓÅ»¯²»ºÃ£¬ÔòÐèÒª»¨ºÜ³¤Ê±¼ä²ÅÄÜ»ñµÃ»ù×¼ÐÔÄÜÖµ¡£Äú¿ÉÒÔʹÓÃСÐͲâÊÔ¹¤¾ßÀ´Ëõ¶ÌһЩÔçÆÚ²âÊÔµÄʱ¼ä£¬»¹¿ÉÒÔ»ñµÃϵͳÊä³öµÄÏêϸÐÅÏ¢¡£È·±£Êýǧ´Îµã»÷µÄ´ÎÃë¼¶ÏìÓ¦²»»áÖ»ÊÇÓ¦ÓóÌÐò´íÎóÒ³ÃæµÄÏ꾡²âÊÔ¡£JMeter
Ìṩ²âÊԻÈÕÖ¾¡£Äú¿ÉÒÔ¶¨ÒåÒ»¸öÎļþ£¨ÀýÈç /tmp/jmeter.out£©À´°üº¬ HTTP ÇëÇóÏìÓ¦»î¶¯µÄ·µ»Ø´úÂë¡£
ÔÚÏÂÃæµÄÏÂÔØ²¿·Ö£¬Äú½«·¢ÏÖ JMeter µÄÁ½¸ö²»Í¬µÄ²âÊÔÎļþ¡£Ò»¸öÊÇÍêÈ«²âÊÔ£¬ÁíÒ»¸ö±êΪ¡°Small¡±¡£Small
²âÊÔÒ²ÆôÓÃÁËÊä³öÊÕ¼¯¹¦ÄÜ£¬ÒÔ±ãÄú¿ÉÒÔ¿´µ½ÇëÇó-ÏìÓ¦µÄ½á¹û¡£ÔÚʵÑé²âÊÔÖУ¬¼ÆËã»úÊÇÍêÈ«Âú¸ººÉµÄ¡ª¡ªÍ¼ 1
ÓÒϽǵÄÀ¶É«Êµ¿ò±íʾ 100% µÄ CPU ʹÓÃÂÊ¡£Í¼ÐÎָʾÆ÷ºÍÔËÐÐ top ÃüÁîµÄ xtermBoth
¶¼Ö¸Ê¾ CPU ʹÓÃÂʵÄÎÊÌâ¡£²éÃ÷ʲôռÓÃÁË CPU ʱ¼äÐèÒª·ÑЩÖÜÕÛ¡£
ûÓÐ×ã¹»µÄ CPU ºÍÄڴ棬·þÎñÆ÷£¨WebSphere Application
Server »òÆäËûÈκηþÎñÆ÷£©½«²»ÄܺܺõØÔËÐС£Èç¹ûÄúÔÚûÓпÕÏÐ CPU ʱ»òÕßÔÚ²Ù×÷ϵͳÐèÒª½»»»ÐéÄâÄÚ´æµÄµØ·½ÊÔͼÓÅ»¯·þÎñÆ÷£¬ÔòÎÞ·¨Ê¹Æä±äµÃºÜ¿ì¡£ÏÂÒ»²¿·Ö½«ÃèÊöÈçºÎ¼ì²â
CPU »òÄÚ´æÊÜÏÞµÄϵͳÒÔ¼°ÈçºÎÐÞ¸´ËüÃÇ¡£
ÓÅ»¯ÈÕÖ¾
һЩÓÅ»¯¸ü¸Ä½«Ê¹ÏµÍ³ÔËÐеøü¿ì£¬¶øÒ»Ð©½«Ê¹Ö®ÔËÐеøüÂý¡£¼Ç¼Äú×öÁËʲô¸ü¸ÄÒÔ¼°ÎªÊ²Ã´ÕâÑù¸ü¸Ä½«Ê¹ÓÅ»¯¹ý³Ì¸ü¼òµ¥Ò²¸ü˳Àû¡£ÏÂÃæÊÇÒ»¸ö·Ç³£¼òµ¥µÄÅäÖÃÈÕÖ¾¡ª¡ª¸ñʽ²»ÊǺÜÖØÒª£¬Ö»ÒªÄúÿ´Î¼Ç¼һЩ¹Ø¼üÊý¾Ýµã¼´¿É¡£Ò»¸öºÃµÄ¹ý³ÌÊǽ«¸ü¸Ä×÷ΪעÊÍ·ÅÔÚÅäÖÃÎļþÖС£
ʾÀýÓÅ»¯ÈÕÖ¾ÌõÄ¿
DateTime:_____________ Name:____________Parameter Changed_____________
Why?_____________________How?________________
New Performance___________millisecondsKeep____________ Remove_____________ How?_____ |
CPU ʹÓÃÂÊ
ÔÚ½øÐÐÈκÎÓÅ»¯Ç°£¬ÏµÍ³±ØÐëÓпÉÓÃµÄ CPU ÖÜÆÚ¡£ÈκÎÔÚ·þÎñÆ÷ÉÏÔËÐеIJ»ÊǺÜÓÐÓõijÌÐò¶¼Ó¦¸ÃÍ£Ö¹»ò½ûÓ᪡ª°üÀ¨ÔÚ·þÎñÆ÷ÉÏÔËÐÐµÄÆ¯ÁÁÆÁÄ»±£»¤³ÌÐò£¡¼ì²â
CPU ÊÜÏÞµÄϵͳµÄ×î¼Ñ·½Ê½ÊÇÔËÐÐ top ÃüÁ¡ªËüÊÇ Linux/Unix ÐÔÄܹ¤¾ßµÄ¡°ÈðÊ¿¾üµ¶¡±£º

ͼ 2. top ÃüÁî
ÔÚÓÒÉϽǣ¬¡°idle¡±´¦ÓÚ 0.0%£¬ËùÒÔÎÒÃÇÖªµÀ¼ÆËã»úÒѽ߾¡È«Á¦ÔÚÔËÐС£¡°COMMAND¡±À¸ÖеĽø³ÌÁбíÏÔʾռÓÃ×î¶à
CPU ÖÜÆÚµÄÁ½¸ö³ÌÐò³ÆÎª wastecpu¡£Èç¹ûÄúÔĶÁÇåµ¥ 2 ÖеÄ×¢ÊÍ£¬Äú»á·¢ÏÖ¿ÉÒÔ½« wastecpu
ɱËÀ¡£
Çåµ¥ 2. wastecpu Ô´´úÂë
/* if you read this comment before you killed "wastecpu" you did good!Wastecpu is meant to simulate a
"production application" and the purpose is to train people not to kill ANYTHING
without knowing what it does.*/#include <stdio.h>main()
{int i;for (i=0;i<1;i=0){/* wow, what a useful program */i=0;}} /* end of main */ |
ÔÚÔËÐÐ top ÃüÁîʱ£¬ÒªÉ±ËÀÕâЩģÄâµÄ CPU ̰³Ô»§£¬Çë°´ K ¼ü£¬top
½«Ñ¯ÎÊÄúҪɱËÀʲô½ø³Ì¡£ÊäÈë½ø³Ì id (PID)£¨ÔÚ±¾ÀýÖÐΪ 2441£©£¬È»ºó top ½«Í£Ö¹´Ë³ÌÐò¡£ÔÙ´ÎÖ´Ðд˲Ù×÷À´É±ËÀµÚ¶þ¸ö¸±±¾
PID 2442¡£Òª±ÜÃâÒÔºó»¹Òª´¦Àí wastecpu ³ÌÐò£¬ÇëÔÚ go_trade6 ½Å±¾Öн«Æä×¢Ê͵ô¡£
ÔÚһЩÉú²ú»·¾³ÖУ¬·¢ÉúÎÊÌâʱ³ýÁË¡°ÅׯúÓ²¼þ¡±Íâ±ðÎÞËû·¨¡£ÓÐÐí¶àÑ¡Ôñ¿ÉÒÔ½øÐÐ×ÝÏòºÍºáÏòÀ©Õ¹¡£Í¼
3 ²ûÊÍÁËÓÃÓÚÔÚʵÑé»·¾³ÖÐÌí¼ÓÁíÒ»¸ö´¦ÀíÆ÷µÄÅäÖ᣽»²æµçÀÂÔÚѧԱС×飨¸ß¶È¾ºÕùµÄѧԱµÄÒ»¸öÖØÒªÌØÕ÷£©Ö®¼äÌṩ¡°ÆøÏ¶
(Air Gap)¡±°²È«ÐÔ¡£

ͼ 3. ²âÊÔʵÑéÖÐÁ½Ì¨ ThinkPad
µÄ Trade 6 ÅäÖÃ
ÄÚ´æÊ¹ÓÃÂÊ
ÔÚÓÐ×ã¹»ÄÚ´æÊ±£¬WebSphere Application Server
Ö´ÐеÃ×îºÃ¡£Äú¿ÉÒÔͨ¹ý top ÃüÁî²é¿´ÄÚ´æÊ¹ÓÃÂÊ¡£¡°½»»»¡±ÓòÓ¦¸ÃΪÁ㡪¡ªÈç¹û²»ÊÇ£¬Ôò²Ù×÷ϵͳÕýÔÚͨ¹ý´ÅÅ̿ռäÄ£ÄâÓиü¶àµÄ
RAM µÄÇé¿ö£¬Õ⵱ȻÊÇÒ»¸öºÜÂýµÄ¹ý³Ì¡£Ê¹Óà vmstat ÃüÁî¿ÉÒÔ¸üÏêϸµØ¼ì²éÄÚ´æÇé¿ö¡£ÏÂÃæµÄͼ 4
ÖÐµÄ vmstat Êä³ö±íÃ÷ϵͳ²»¿°Öظº¡£¡°si¡±ºÍ¡°so¡±À¸£¨swap-in ºÍ swap-out£©ÓëÁãÏàÈ¥ÉõÔ¶¡£´Ë¼ÆËã»úÐèÒª¸ü¶àµÄÄÚ´æ»òÕß¼õÉÙÕýÔÚÔËÐеijÌÐò¡£Óйء°si¡±ºÍ¡°so¡±µÄ¸ü¶àÐÅÏ¢£¬ÇëʹÓÃ
man vmstat »ñµÃ¡£

ͼ 4. ÄÚ´æ²»×ãµÄϵͳ¡ª¡ª¡°si¡±ºÍ¡°so¡±Ó¦¸ÃΪÁã
ÔËÐзþÎñÆ÷»òÕßʹÓà VMWare ½ÌÊÚʵÑéµÄ×îºÃ×ö·¨¾ÍÊÇ¡°Éý¼¶¡±ÄÚ´æÊ±²»Óôò¿ª¼ÆËã»ú¡£Ö»Ðè¹Ø±Õ¿Í»§²Ù×÷ϵͳ
(guest operating system)£¬½«ÉèÖøü¸ÄΪʹÓÃÈ«²¿Äڴ棬ȻºóÆô¶¯ÐéÄâ»ú£¬ÈçÏÂÃæµÄͼ
5 Ëùʾ¡£Èç¹ûÐéÄâ»úÐèÒª±ÈÔËÐÐÖ÷»ú²Ù×÷ϵͳ¸ü¶àµÄÄڴ棬Ôò³ÌÐòÔËÐÐÈÔÈ»»áºÜÂý¡£Èç¹ûÓÐÈËÄܹ»·¢Ã÷Ò»¸öϵͳ£¬Ëü¿ÉÒÔÄ£ÄâµÄÄÚ´æ±ÈÓ²¼þÖÐÏÖÓеÄÄÚ´æ¸ü¶à£¬ÔòÕâЩ³ÌÐò½«»áÖ´Ðе÷dz£ºÃ£¡
ͼ 5. VMWare ¹¤×÷Õ¾ÖеÄÄÚ´æÉý¼¶
ÆäËû»·¾³ÒòËØ
»·¾³ÖÐÓÐÐí¶àÆäËûÒòËØ»áÓ°ÏìÐÔÄÜ£¬°üÀ¨ÍøÂçʹÓÃÂÊ¡¢·þÎñÆ÷ÉÏµÄÆäËû³ÌÐò¡¢¾Ü¾ø·þÎñ¹¥»÷ÒÔ¼°µçÔ´Ïß±»°í¶Ï¡£ÇëÈ·±£ÄúµÄ²Ù×÷ϵͳÕë¶Ô¹¤×÷¸ºÔؽøÐÐÁËÓÅ»¯¡£ÄúÐèÒªÐÞ¸Ä
Linux É쵀 sysctl¡¢Solaris É쵀 /etc/system£¬ÒÔ¼°AIX ÉϵÄÒ»×é²ÎÊý£¨Çë²ÎÔÄÏÂÃæµÄ²Î¿¼×ÊÁÏ£©¡£
Êý¾Ý¿â¹ÜÀíÔ± (DBA) Äܹ»¶ÔÐÔÄÜÓÅ»¯×ö³öºÜ´óµÄ¹±Ïס£³ýÁ˵÷ÕûÊý¾Ý¿â²ÎÊýÍ⣬DBA
¿ÉÒÔʶ±ð³ö±àµÃ²»ºÃµÄ²éѯºÍËÀËøÉú³ÉÆ÷£¬ÕâÖÖ·´À¡¶ÔÌá¸ßÐÔÄÜÊǺÜÖØÒªµÄ¡£DBA »¹ÓÐһЩÁé»îµÄ¹¤¾ß£¬ÀýÈç DB2
Health Center£¬Ëü¿ÉÒÔʶ±ðÎÊÌâ²¢Éú³É½Å±¾À´ÐÞ¸´ÕâЩÎÊÌâ¡£DB2 Performance Adviser
ºÍ Index Adviser Ҳʹ DB2 Êý¾Ý¿âÓÅ»¯±äµÃ¸üÈÝÒס£Òª´ò¿ª DB2 Health Center£¬Äú¿ÉÒÔ´ÓÃüÁîÐÐÊäÈë
db2hc£¬»òÕßµ¥»÷ DB2 Command Center ÖÐµÄ Health Center ͼ±ê¡£ÏÂÃæµÄͼ
6 ÏÔʾÁË DB2 Health Center Éú³ÉµÄÒ»¸ö¾¯±¨£¬Í¼ 7 ÏÔʾÁËËüΪ¸ü´óµÄËøÁбíÌṩµÄÒ»¸ö½¨Ò飺

ͼ 6. ÕýÔÚÔËÐÐµÄ Health Center£ºÉú³ÉÒ»¸ö¾¯±¨

ͼ 7. ÕýÔÚÔËÐÐµÄ Health Center£ºÍƼö½â¾ö·½°¸
Ó¦¸Ã²¶»ñͼ 7 Öн¨ÒéµÄÃüÁî²¢½«Æä·ÅÔÚÒ»¸ö½Å±¾ÎļþÖС£µ±Á賿Á½µãÊÔͼ»Ö¸´ÏµÍ³Ê±ÊÇûÓеط½»ñµÃ
GUI µÄ£¡ËùÓеÄÒ»Çж¼ÐèÒª·ÅÔڽű¾ÖС£
ʵÏÖ Jython ¾ÑéÓÅ»¯·½·¨
ÏÖÔÚÎÒÃÇ¿ªÊ¼ÓÅ»¯ WebSphere Application Server¡£Wikipedia.org
½«¾Ñé·½·¨ ¶¨ÒåΪ¡°½øÐнüËÆ¼ÆËã»ò»Øµ÷ij¸öÖµ£¬»òÕß½øÐÐijÖÖ¾ö²ßµÄÒ×ѧÒ×ÓõĹý³Ì¡±¡£ÕâÊǽøÐпìËÙ¶øÖÊÁ¿²»¸ßµÄÓÅ»¯µÄ¡°È볡ȯ¡±¡£ÎªÊ²Ã´Ê¹ÓÃ
Jython ÄØ£¿Ó²ºË¹ÜÀíԱʹÓÃÃüÁîÐжø·Ç GUI À´Ö´ÐÐÖØ¸´µÄ¶¨ÒåÁ¼ºÃµÄÈÎÎñ¡£ÒýÓÃÎÒÃÇһλ¿ª·¢×¨¼ÒµÄ»°£¬¡°ÉúÃüÌ«¶Ì£¬²»×ãÒÔÓÃ
tcl ±à³Ì¡£¡±
JVM ÈßÓàÀ¬»ø»ØÊÕ (GC)
JVM ÔÚ¶ÑÖÐÖ´ÐÐÆä¹¤×÷µÄºËÐIJ¿·Ö¡£¶ÔÏó²»ÔÙʹÓÃʱ¾ÍÊÇÀ¬»ø£¨¼¼ÊõÊõÓïÊÇËüÃDz»ÔÙ±»ÒýÓã©¡£¶ÔÓÚÈκμҾӣ¬Äú¿ÉÒÔͨ¹ý¿´ÆäÀ¬»øÀ´Á˽â¾ÓסµÄÊÇʲôÑùµÄÈË£¡Verbose
GC ÓÐÖúÓÚÄúÈ·¶¨ÄúµÄÄÚ´æ¶ÑÊÇ·ñÌ«¶à»òÌ«´ó¡£
Çåµ¥ 3. ÓÅ»¯ÈßÓà GC
#(c)copyright 2005# sample code - not supported# get help with this command in
interactive mode: AdminConfig.help()server1=AdminConfig.getid('/Node:tux1Node01/Server:server1/')
print server1jvm = AdminConfig.list('JavaVirtualMachine', server1)print ">>>>>
variable jvm is"print jvmprint ">>>>> AdminConfig.show(jvm)"print AdminConfig.show(jvm)print "
>>>>> change jvm settings"AdminConfig.modify(jvm, [['verboseModeGarbageCollection','true' ]] )
AdminConfig.save() print ">>>>> after save:"print AdminConfig.show(jvm)
# on my system the output of verbose gc is in the file:#
/opt/IBM/WebSphere/AppServer/profiles/default/logs/server1/native_stderr1.log#
your milage may vary if you change the log locations## note
- when using jython you must use the string 'true', see below. ##wsadmin>
AdminConfig.modify(jvm, [['verboseModeGarbageCollection', 0 ]] )#WASX7435W: Value 0 is converted
to a boolean value of false.#''#wsadmin>AdminConfig.modify(jvm, [['verboseModeGarbageCollection', 1 ]] )
#WASX7435W: Value 1 is converted to a boolean value of false.#'' |
ҪʹÓÃÒÔÉϽű¾£¬ÇëÖ´ÐÐÏÂÁвÙ×÷£º
½«Æä·ÅÔÚÒ»¸öÎļþÖв¢ÆðÒ»¸öÓÐÓõÄÃû×Ö£¬ÀýÈç verboseGC_on.jython¡£
È·±£ wsadmin.sh£¨»òÕß wsadmin£¬¶ÔÓÚ Windows©ÔÚÄÄÃî·¾¶ÖС
ÔÚÃüÁîÌáʾ·ûÏÂÔËÐÐ wsadmin.sh -lang jython -f
verboseGC_on.jython¡£
JVM ÉèÖÃ
ÏÖÔÚÄúÒѾÅäÖÃÁËÈßÓà GC£¬Äú¿ÉÒÔ¿ªÊ¼ÓÅ»¯¶ÑµÄ´óС¡£ÀíÏëÇé¿öÏ GC ÖÜÆÚÓ¦¸Ã£º
·¢Éú¼ä¸ô´óÓÚ 10 Ãë
ÔÚ 1 ÖÁ 2 ÃëÄÚÍê³É
ÏÂÃæµÄ½Å±¾½«¸ü¸Ä¶ÑµÄ´óС¡£ÆäÄ¿±êÊÇʹ¶Ñ×ã¹»´ó£¬´óµ½ GC ¼ä¸ô´óÓÚ 10
Ã룻¶øÓÖ×㹻С£¬Ð¡µ½³ÖÐøÊ±¼ä½öΪ 1 µ½ 2 Ãë¡£¶ÔÓÚÿ¸öÐ嵀 JVM °æ±¾£¬GC Ëã·¨½«»áµÃµ½¸Ä½ø£¬ËùÒÔ´ËÓÅ»¯Ó¦¸Ã»áËæ×Åʱ¼äµÄÁ÷ÊÅÔ½À´Ô½ÈÝÒס£
Çåµ¥ 4. native_stderr1.log£¬Æä GC ¼ä¸ô 6893
ºÁÃ룬³ÖÐøÊ±¼ä 456 ºÁÃë
<AF[14]; Allocation Failure. need 528 bytes, 6893 ms since last AF><AF[14]; managing allocation failure,
action=1 (0/183731208) (1668600/1668600)> <GC(14); freeing class sun.reflect.GeneratedMethodAccessor18(0x102391b8)>
<GC(14); freeing class sun.reflect.GeneratedFieldAccessor1(0x104e9f48)>..... lines deleted......
<GC(14); freeing class sun.reflect.GeneratedFieldAccessor19(0x10129030)>
<GC(14); unloaded and freed 20 classes> <GC(14);
GC cycle started Tue Dec 27 16;18;13 2005 <GC(14); freed 77240288 bytes, 42% free (78908888/185399808),
in 436 ms> <GC(14); mark; 396 ms, sweep; 40 ms, compact; 0 ms>
<GC(14); refs; soft 52 (age > 6), weak 89, final 88, phantom 0><AF[14]; completed in 456 ms> |
Çåµ¥ 5. ½« JVM ¶ÑÔö¼Óµ½ 512 MB - 1 GB
#(c)copyright 2005# sample code - not
supported#AdminConfig.help()server1=AdminConfig.getid('/Node:tux1Node01/Server:server1/')print
server1jvm = AdminConfig.list('JavaVirtualMachine', server1)print ">>>>>
variable jvm is"print jvmprint ">>>>> AdminConfig.show(jvm)"print AdminConfig.show(jvm)print ">>>>>
change jvm settings"AdminConfig.modify(jvm, [['initialHeapSize', 512 ],
['maximumHeapSize', 1024 ]])print ">>>>> AdminConfig.show(jvm)"print AdminConfig.show(jvm)AdminConfig.save() |
Á¬½Ó³ØÉèÖÃ
СÐÍ£¨4 ¸ö CPU£©Êý¾Ý¿â·þÎñÆ÷µÄ¡°×î¼Ñ״̬¡±ÊÇÌṩ 100-200
¸öÁ¬½Ó¡£WebSphere ×÷ΪÊý¾Ý¿â·þÎñÆ÷Ç°ÃæµÄÒ»¸öÁ¬½Ó¼¯Ï߯÷¡£Á¬½Ó³ØµÄ´óСÏÞÖÆÁË¿ª·Å¶àÉÙÊý¾Ý¿âÁ¬½ÓÀ´ÊÜÀí´«ÈëµÄÒ³ÃæÇëÇó¡£
Çåµ¥ 6 ÖеĽű¾½« Trade6 Ó¦ÓóÌÐòÖÐʹÓÃµÄ JDBC Êý¾ÝÔ´µÄÊý¾Ý¿âÁ¬½Ó³ØÏÞÖÆÉèÖÃΪ
113¡£Èç¹ûÄúµÄÓ¦ÓóÌÐòʹÓÃËùÓпÉÓõÄÁ¬½Ó£¬Ôò´ó
ÊýÁ¬½Ó¶¼¿ÉÄÜÓÐÒ»¸öÐèÇóδÄÜÂú×ã¡£Äú¿ÉÒÔͨ¹ýÔĶÁ javacore À´¼ì²â´ËδÂú×ãµÄÐèÇ󣬻òÕßͨ¹ýÔö¼ÓÁ¬½ÓÊý²¢²é¿´Ê²Ã´Ê±ºòÓ¦Ó÷þÎñÆ÷Í£Ö¹ÇëÇó¸ü¶àµÄÁ¬½Ó¡£Èç¹ûÁ¬½ÓÊýµÈÓÚ»ò´óÓÚ
WebSphere ¿Í»§¶ËÓû§Êý£¬ÔòÓ¦¸Ã¼ì²éÓ¦ÓóÌÐòÊÇ·ñ´æÔÚ²»ÑϽ÷µÄ´úÂë¡£
Çåµ¥ 6. ½« JDBC Á¬½Ó³Ø´óСÉèÖÃΪ 113
#(c)copyright 2005# sample code - not supportedserver1=AdminConfig.getid('/Node:tux1Node01/Server:server1/')
print server1jvm = AdminConfig.list('JavaVirtualMachine', server1)print "--> variable jvm is"print jvmprint "-->
AdminConfig.show(jvm)"myds=AdminConfig.getid('/DataSource:TradeDataSource/')
mydslist=AdminConfig.list('ConnectionPool',myds)print "-->
before: "print AdminConfig.show(mydslist)AdminConfig.modify(myds, '[[connectionPool [[maxConnections 113]]]]')
AdminConfig.save()#AdminConfig.modify(myds, '[[connectionPool [[minConnections 20]]]]')#AdminConfig.save()
after: "mydslist=AdminConfig.list('ConnectionPool',myds)print AdminConfig.show(mydslist)#
monitor connections at the database with the command# watch -d -n 5 "db2 list applications
| wc -l"# or informix# watch -d -n 5 "onstat -g ses | wc -l"# this will include some irrelevant lines
in count -- feel free to egrep them out |
ÆôÓà Servlet »º´æ
WebSphere Application Server ÄÚÖÃÁËÁ½¸öÐÔÄܹ¤¾ßÒÔ°ïÖú¸Ä½øÅäÖá£Performance
Adviser »áÓѺõؽ¨ÒéÄúÓÅ»¯ servlet »º´æ£¬Èç¹ûÄúͬÒ⣬Ëü½«Ê¹ÐÔÄܵÃÒÔ¸ÄÉÆ¡£ÏÂÃæµÄͼ 8
ÏÔʾÁËÐÔÄܲ鿴Æ÷µÄͼÐÎÊä³ö¡£Òª·ÃÎÊÃâ·ÑµÄ IBM Áª»ú Education Assistant£¨ËüÌṩÁËÓйØÈçºÎʹÓÃ
PMI ¹¤¾ßµÄ½Ì³Ì£©£¬Çë²éÔÄÏÂÃæµÄ²Î¿¼×ÊÁÏ¡£
Çåµ¥ 7. ÆôÓà Servlet »º´æ
server1=AdminConfig.getid('/Node:tux1Node01/Server:server1/')print
server1mywebcont=AdminConfig.list('WebContainer', server1)print AdminConfig.show(mywebcont)print
"now modify settings"AdminConfig.modify(mywebcont,
[['enableServletCaching', 'true']] )AdminConfig.save()print AdminConfig.show(mywebcont) |

ͼ 8. ÐÔÄܲ鿴Æ÷
Ï̳߳ؼÆÊý
´Ë½Å±¾ÊʶȵØÔö¼ÓÏ̳߳ØÒÔ±£Ö¤ CPU Äܹ»½ÓÊÜ¡£Ò»¸ö CPU ¿ÉÒÔÇý¶¯
50 µ½ 75 Java Ï̡߳£¸Ã½Å±¾ºÜÖØÒª£¬ÒòΪËü±ØÐë·¢ÏÖÓë Web ÈÝÆ÷Ïà¹ØµÄÏ̳߳ء£Ò»Ð©¼òµ¥µÄ Jython
´úÂë·¢ÏÖÕýÈ·µÄ±êʶ·û£¬È»ºóΪ»î¶¯Ï̷߳ÖÅäеÄ×îСºÍ×î´óÖµ£º
Çåµ¥ 8. Ôö¼Ó WebContainer µÄÏ̳߳شóС
server1=AdminConfig.getid('/Node:tux1Node01/Server:server1/')# show all thread pools#
print AdminConfig.list('ThreadPool', server1)# from all the ThreadPools take the
WebContainer# it will look something like this:#webpool='WebContainer(cells/tux1Node01Cell/nodes/tux1Node01#
cont.../servers/server1|server.xml#ThreadPool_1113265230034)'## here is how to find the thread
pool with jython#tpList=AdminConfig.list('ThreadPool', server1).split(lineSeparator)
# now loop and find WebContainer# the string.count() tests for a substring# for
production please add your own error handlingfor tp in tpList:
if tp.count('WebContainer') == 1:
tpWebContainer=tp## white space is significant in jython, so the un-indented line# ends the code blockprint
tpWebContainerprint AdminConfig.show(tpWebContainer)# now that we have the identifier
to get to tpWebContainer # adjust the settings#AdminConfig.modify( tpWebContainer, [['maximumSize', 75 ]] )
AdminConfig.save()AdminConfig.modify( tpWebContainer, [['minimumSize', 50 ]] )
AdminConfig.save()print AdminConfig.show(tpWebContainer) |
¸ß¼¶ÓÅ»¯Ë¼Ï룺ÏÂÒ»²½ÓÅ»¯Ê²Ã´
Óкܶà²ÎÊý¿ÉÒÔÓÅ»¯¡ª¡ªÒ»Ð©¿ÉÒÔʹϵͳ±äµÃ¸ü¿ì£¬Ò»Ð©Ôò»áʹ֮±äµÃ¸üÂý¡£ÒªÔĶÁÓÅ»¯¼Ñ×÷£¬Çë²éÔÄÏÂÃæµÄ²Î¿¼×ÊÁÏÖеÄ
SpecJAppServer2004 È«ÃæÅû¶±¨¸æ¡£
ÓдóÁ¿´´½¨½Å±¾µÄ×ÊÔ´¡ª¡ªÏàÐÅÄú»áͬÒâʹÓýű¾ÊÇ×îºÃµÄ·½·¨¡£ÔÚÄúͨ¹ýÒ»Á½´ÎʹÓùÜÀí
GUIÁ˽âÁË¿ÉÓõIJÎÊý·¶Î§ºó£¬½«»á¿¼ÂÇתΪʹÓýű¾¡£Óйؽű¾µÄ¸ü¶àÐÅÏ¢£¬Çë²ÎÔÄÏÂÃæµÄ²Î¿¼×ÊÁÏ¡£
½áÊøÓï
±¾ÎÄÃèÊöÁËÈçºÎ»ùÓÚһЩ¼òµ¥µÄ¾ÑéÀ´ÅäÖà WebSphere Application
Server¡£Í¬Ê±ÈÃÄúͨ¹ý·ÃÎÊÏÂÃæµÄÐí¶à×ÊÔ´À´»ñµÃ¹ØÓÚÐÔÄÜÓÅ»¯µÄ¸ü¶àÐÅÏ¢¡£
ÔÚʵÑé»ù׼ѵÁ·ÖУ¬µ¥Ò»µÄ×î´ó¸ÄÉÆÊÇʲô£¿ÓÅ»¯Ó¦ÓóÌÐò£¡ÏÂÃæµÄͼ 9 ÏÔʾÁË
Trade6 Ó¦ÓóÌÐòµÄÅäÖÃÒ³Ãæ¡£Çл»µ½Ö±½ÓµÄÊý¾Ý¿â·ÃÎÊºÍ JMS ÊÇÐÔÄܸÄÉÆµÄ×î´óµ¥Ò»¹±Ï×Õß¡£ÆäËûÓ¦ÓóÌÐò²ÎÊýÒ²ÌṩÁËÐÔÄܸÄÉÆ¡£¸ÃʵÑéʾÀýÔÊÐíͨ¹ý
Web Ò³Ãæ¸ü¸ÄÓ¦ÓóÌÐò¡£ÄúµÄÓ¦ÓóÌÐòÒ²¿ÉÒÔͨ¹ýÅäÖÃÎļþÀ´»ñµÃÀàËÆµÄÁé»îÐÔ¡£

ͼ 9. Trade6 Ó¦ÓóÌÐòÅäÖÃÒ³Ãæ£ºµ¥¸ö
CPU¡¢0.2 ÃëÏìӦʱ¼ä
Èç¹ûÄú´ïµ½»ò³¬Ô½ÁËÐÔÄÜÄ¿±ê£¬»¹Ó¦¸Ã×öÐ©Ê²Ã´ÄØ£¿ÔÚÏÂÃæµÄͼ 10 ÖУ¬ÓµÓÐ
0.2 ÃëÏìӦʱ¼ä£¬¿´ÆðÀ´ÓÅ»¯ÒѾµ½Í·ÁË¡£´Ëʱ£¬Äú¿ÉÒÔÓøü¶àµÄÓû§¡¢¸ü´óµÄÿÓû§ÊÂÎñÊý£¬»òÕ߸ü¸´ÔÓµÄÊÂÎñÀ´ÔöÇ¿²âÊÔ¹¤¾ß¡£¶ÔÓÚÐí¶àÓû§Êý³¬¹ý¼Æ»®µÄÇé¿ö£¬ÏêϸµÄÐÔÄÜÃèÊö½«Ê¹ÄúÁ˽âÅäÖÃÆ½Ì¨µÄÈÝÄÉ·¶Î§Óжà´ó¡£
Äú¿ÉÄܶÔÈçºÎÙúµÃʵÑéÁ·Ï°ºÍÈçºÎ´ÓʾÀýÓ¦ÓóÌÐò»ñµÃ×î¼ÑÐÔÄܸÐÐËȤ¡£Éè¼Æ¸ÃʵÑéºÍ׫д±¾ÎĵÄÄ¿µÄ²»ÊÇΪÁËÓ®µÃÒ»³¡¾ºÕù£¬¶øÊÇΪÌá¸ß
WebSphere Application Server ÐÔÄÜÌṩһ¸ö¿ìËÙÖ¸µ¼¡£Èç¹ûÎÒºöÂÔÁËÄú×îϲ»¶µÄÓÅ»¯²ÎÊý£¬ÎÒ½«ºÜÀÖÒâÔÚÒÔºóµÄÎÄÕÂÖн«Ëü°üº¬½øÀ´¡ª¡ªÇ뽫ÄúµÄÓÅ»¯½¨ÒéÓýű¾ÐÎʽ·¢Ë͸øÎÒ£¬ÎÒµÄÓÊÏäÊÇ
lurie@us.ibm.com¡£ÎÒÆÚ´ýÄú·´À¡Äú¾õµÃÈÝÒ×ÓÅ»¯ÇÒÓÅ»¯ºóÄÜ»ñµÃºÜ´óÐÔÄܸÄÉÆµÄ²ÎÊý£¬²¢½«´úÂëʾÀý·¢Ë͸øÎÒÃÇ¡£

ͼ 10. Ó¦ÓóÌÐòÓÅ»¯Ìṩ×î´óÊÕ»ñ£ºÔÚÒ»¸ö
CPU ÉÏ»ñµÃ 0.2 ÃëÏìӦʱ¼ä£¡
|