Ò»¡¢ÏûÏ¢¶ÓÁг¡¾°¼ò½é
¡°ÏûÏ¢¡±ÊÇÔÚÁ½Ì¨¼ÆËã»ú¼ä´«Ë͵ÄÊý¾Ýµ¥Î»¡£ÏûÏ¢¿ÉÒԷdz£¼òµ¥£¬ÀýÈçÖ»°üº¬Îı¾×Ö·û´®£»Ò²¿ÉÒÔ¸ü¸´ÔÓ£¬¿ÉÄܰüº¬Ç¶Èë¶ÔÏó¡£ÏûÏ¢±»·¢Ë͵½¶ÓÁÐÖУ¬¡°ÏûÏ¢¶ÓÁС±ÊÇÔÚÏûÏ¢µÄ´«Êä¹ý³ÌÖб£´æÏûÏ¢µÄÈÝÆ÷¡£

ÔÚĿǰ¹ã·ºµÄWebÓ¦ÓÃÖУ¬¶¼»á³öÏÖÒ»ÖÖ³¡¾°£ºÔÚijһ¸öʱ¿Ì£¬ÍøÕ¾»áÓÀ´Ò»¸öÓû§ÇëÇóµÄ¸ß·åÆÚ£¨±ÈÈ磺ÌÔ±¦µÄ˫ʮһ¹ºÎï¿ñ»¶½Ú£¬12306µÄ´ºÔËÇÀƱ½ÚµÈ£©£¬Ò»°ãµÄÉè¼ÆÖУ¬Óû§µÄÇëÇ󶼻ᱻֱ½ÓдÈëÊý¾Ý¿â»òÎļþÖУ¬Ôڸ߲¢·¢µÄÇéÐÎÏ»á¶ÔÊý¾Ý¿â·þÎñÆ÷»òÎļþ·þÎñÆ÷Ôì³É¾Þ´óµÄѹÁ¦£¬Í¬Ê±ÄØ£¬Ò²Ê¹ÏìÓ¦ÑӳټӾ硣ÕâҲ˵Ã÷ÁË£¬ÎªÊ²Ã´ÎÒÃǵ±Ê±ÄÇôµØ±§Ô¹ºÍͲÛÕâÐ©ÍøÕ¾µÄÏìÓ¦ËÙ¶ÈÁË¡£µ±Ê±2011ÄêµÄ¾©¶«Í¼Êé´ÙÏú£¬ÔøÒ»Ö±³öÏÖÔÚ¹ºÎï³µÖеã»÷¡°¹ºÂò¡±°´Å¥ºóÒ»Ö±ÊÇ¡°Service
is too busy¡±£¬Æäʵ¾ÍÊÇÒòΪµ±Ê±µÄ²¢·¢·ÃÎÊÁ¿¹ý´ó£¬³¬¹ýÁËϵͳµÄ×î´ó¸ºÔØÄÜÁ¦¡£µ±È»£¬ºó±ß£¬ÁõÇ¿¶«ÁÙʱ¹ºÂòÁ˲»ÉÙ·þÎñÆ÷½øÐÐÀ©Õ¹ÒÔÇóÔöÇ¿´¦Àí²¢·¢ÇëÇóµÄÄÜÁ¦£¬»¹ÇëÁËÐÅÏ¢²¿µÄÈËÔ±¡°ºÈ²è¡±£¬ÏÖÔÚ¾©¶«ÒѾÊdz¬´óÐ͵ÄÍøÉÏÉ̳ÇÁË£¬ÎÒÒ²ÓÐͬѧÔÚ¾©¶«³É¶¼Ñо¿Ôº¹¤×÷ÁË¡£

´Ó¾©¶«µ±ÄêµÄ¡°Service is too busy¡±²»ÄÑ¿´³ö£¬¸ß²¢·¢µÄÓû§ÇëÇóÊÇÍøÕ¾³É³¤¹ý³ÌÖбز»¿ÉÉٵĹý³Ì£¬Ò²ÊÇÒ»¸ö±ØÐëÒª½â¾öµÄÄÑÌâ¡£ÔÚÖÚ¶àµÄʵ¼ùµ±ÖУ¬³ýÁËÔö¼Ó·þÎñÆ÷ÊýÁ¿ÅäÖ÷þÎñÆ÷¼¯ÈºÊµÏÖÉìËõÐԼܹ¹Éè¼ÆÖ®Í⣬Òì²½²Ù×÷Ò²±»¹ã·º²ÉÓ᣶øÒì²½²Ù×÷ÖÐ×îºËÐĵľÍÊÇʹÓÃÏûÏ¢¶ÓÁУ¬Í¨¹ýÏûÏ¢¶ÓÁУ¬½«¶Ìʱ¼ä¸ß²¢·¢²úÉúµÄÊÂÎñÏûÏ¢´æ´¢ÔÚÏûÏ¢¶ÓÁÐÖУ¬´Ó¶øÏ÷ƽ¸ß·åÆÚµÄ²¢·¢ÊÂÎñ£¬¸ÄÉÆÍøÕ¾ÏµÍ³µÄÐÔÄÜ¡£ÔÚ¾©¶«Ö®ÀàµÄµç×ÓÉÌÎñÍøÕ¾´ÙÏú»î¶¯ÖУ¬ºÏÀíµØÊ¹ÓÃÏûÏ¢¶ÓÁУ¬¿ÉÒÔÓÐЧµØµÖÓù´ÙÏú»î¶¯¸Õ¿ªÊ¼¾Í¿ªÊ¼´óÁ¿Ó¿ÈëµÄ¶©µ¥¶ÔϵͳÔì³ÉµÄ³å»÷¡£
¼ÇµÃÎÒÔÚʵϰÆÚ¼ä£¬³É¶¼ÊÐXXXX¾ÖµÄÒ»¸ö¼Û¸ñÐÅÏ¢²É¼¯·¢²¼ÏµÍ³ÏîÄ¿ÖÐÓÐÒ»¸ö²É¼¯ÈÎÎñ·¢²¼µÄÄ£¿é£¬ÆäÖÐÿ¸öÈÎÎñ¶¼ÊÇÒ»¸öÊÂÎñ£¬Õâ¸öÊÂÎñÖÐÐèÒªÏòÊý¾Ý¿âÖв»¶ÏµØ²åÈëÐУ¬Ã¿¸öÈÎÎñ·¢²¼Ê±¶¼ÒªÍù±íÖвåÈ뼸°ÙÐÐÉõÖÁ¼¸Ç§ÐеÄÈÎÎñÊý¾Ý£¨±ÈÈç¼Û¸ñ²É¼¯ÈÕ±¨£¬ÍùÍùÐèÒª·¢²¼2-3ÄêµÄÈÎÎñÊý¾Ý£¬Ã¿Ò»Ìì¶¼ÊÇÒ»¸öÈÎÎñ£¬ËùÒÔ´óÔ¼ÓÐ2,3ǧÐÐÈÎÎñÆÚºÅÊý¾Ý£¬»¹Òª·¢¸øºÜ¶à¸öÇøÏØµÄ¼à²âÖÐÐÄ£¬Òò´ËÊý¾Ý¿âд²Ù×÷Á¿ºÜ´ó£¬¸ü±ð˵ͬʱ·¢²¼µÄ²¢·¢²Ù×÷£©£¬ÓÉÓÚÒµÎñÂß¼µÄ´¦Àí±È½Ï¸´ÔÓºÍÍùÊý¾Ý¿âµÄд²Ù×÷Á¿½»´ó£¬ËùÒÔÔÚûÓвÉÓÃÏûÏ¢¶ÓÁÐʱµã»÷¡°·¢²¼¡±°´Å¥ºóÍùÍùÐèÒªµÈ´ý1·ÖÖÓ×óÓÒµÄʱ¼ä²ÅÌáʾ¡°·¢²¼³É¹¦¡±£¬Óû§ÌåÑ鼫²»ÓѺá£

Õâʱ£¬ÎÒÃǾͿÉÒÔʹÓÃÏûÏ¢¶ÓÁеÄ˼ÏëÀ´Öع¹Õâ¸ö·¢²¼Ä£¿é£¬ÔÚÓû§µã»÷¡°·¢²¼¡±°´Å¥ºó£¬ÏµÍ³Ö»ÐèÒª°ÑÍùÊý¾Ý¿â²åÈëµÄÕâ¸öÊÂÎñÐÅÏ¢²åÈëµ½Ö¸¶¨µÄÈÎÎñ·¢²¼ÏûÏ¢¶ÓÁÐÀï±ßÈ¥£¨Èë¶Ó²Ù×÷£¬ÕâÀïÒ»°ãÓÐһ̨¶ÀÁ¢µÄÏûÏ¢¶ÓÁзþÎñÆ÷À´µ¥¶À´æ´¢ºÍ´¦Àí£©£¬È»ºóϵͳ¾Í¿ÉÒÔÁ¢¼´¶ÔÓû§µÄÕâ¸ö·¢²¼ÇëÇó½øÐÐÏìÓ¦£¨±ÈÈç¸ø³öÒ»¸ö·¢²¼³É¹¦µÄ²Ù×÷Ìáʾ£¬ÕâÀïÔݲ»¿¼ÂÇÏûÏ¢¶ÓÁзþÎñ²Ù×÷ʧ°ÜµÄÇéÐΣ¬Èç¹ûʧ°ÜÁË£¬¿ÉÒÔ¿¼ÂDzÉÓøøÓû§·¢ËÍÓʼþ¡¢¶ÌÐÅ»òÕ¾ÄÚÏûÏ¢£¬ÈÃÆäÖØÐ½øÐз¢²¼²Ù×÷£©¡£

×îºó£¬ÏûÏ¢¶ÓÁзþÎñÆ÷ÖÐÓÐÒ»¸ö½ø³Ìµ¥¶À¶ÔÏûÏ¢¶ÓÁнøÐд¦Àí£¬Ê×ÏÈÅжÏÏûÏ¢¶ÓÁÐÖÐÊÇ·ñÓдý´¦ÀíµÄÏûÏ¢£¬Èç¹ûÓУ¬Ôò½«ÆäÈ¡³ö£¨³ö¶Ó²Ù×÷£¬¼á³Ö¡°ÏȽøÏȳö¡±µÄ˳Ðò£¬±£Ö¤ÊÂÎñµÄ׼ȷÐÔ£©½øÐÐÏàÓ¦µØ´¦Àí£¨±ÈÈçÕâÀïÊǽøÐб£´æÊý¾ÝµÄ²Ù×÷£¬½«Êý¾Ý²åÈëµ½Êý¾Ý¿â·þÎñÆ÷ÖеÄÖ¸¶¨Êý¾Ý¿âÀï±ß£¬ÊµÖÊ»¹ÊÇÎļþµÄIO²Ù×÷£©¡£¾ÍÕâÑù£¬Í¨¹ýÏûÏ¢¶ÓÁн«¸ß²¢·¢Óû§ÇëÇó½øÐÐÒì²½²Ù×÷£¬È»ºóÒ»Ò»¶ÔÏûÏ¢¶ÓÁнøÐгö¶ÓµÄͬ²½²Ù×÷£¬Ò²±ÜÃâÁ˲¢·¢¿ØÖƵÄÄÑÌâ¡£
˵µ½ÕâÀ´ó¼Ò¿ÉÄÜ»áÏëµ½ÕâÄáÂê²»¾ÍÊÇÉú²úÕßÏû·ÑÕßģʽô£¿¶ÔµÄ£¬Ã´Ã´àª£¬ÏûÏ¢¶ÓÁоÍÊÇÉú²úÕßÏû·ÑÕßģʽµÄµäÐͳ¡¾°¡£¼òµ¥µØËµ£¬¿Í»§¶Ë²»Í¬Óû§·¢Ë͵IJÙ×÷ÇëÇó¾ÍÊÇÉú²úÕߣ¬ËûÃǽ«Òª´¦ÀíµÄÊÂÎñ´æ´¢µ½ÏûÏ¢¶ÓÁÐÖУ¬È»ºóÏûÏ¢¶ÓÁзþÎñÆ÷µÄij¸ö½ø³Ì²»Í£µØ½«Òª´¦ÀíµÄµ¥¸öÊÂÎñ´ÓÏûÏ¢¶ÓÁÐÖÐÒ»¸öÒ»¸öµØÈ¡³öÀ´½øÐÐÏàÓ¦µØ´¦Àí£¬Õâ¾ÍÊÇÏû·ÑÕßÏû·ÑµÄ¹ý³Ì¡£
ÏÂÃæÎÒÃǽ«ÒÔÒì³£ÈÕ־Ϊ°¸Àý£¬½éÉÜÔÚ.NetÖÐÈçºÎ²ÉÓÃÏûÏ¢¶ÓÁеÄ˼Ïë½â¾ö²¢·¢ÎÊÌâ¡£µ±È»£¬ÏûÏ¢¶ÓÁÐÖ»Êǽâ¾ö²¢·¢ÎÊÌâµÄÆäÖÐÒ»ÖÖ·½Ê½£¬ÔÚʵ¼ÊÖÐÍùÍùÐèÒª½áºÏ¶àÖÖ²»Í¬µÄ¼¼Êõ·½Ê½À´¹²Í¬½â¾ö£¬±ÈÈç¸ºÔØ¾ùºâ¡¢·´Ïò´úÀí¡¢¼¯ÈºµÈ·½°¸¡£ÕâÀËäÈ»ÒÔÒì³£ÈÕ־Ϊ°¸Àý£¬µ«ÊÇ¡°ÂéȸËäСÎåÔà¾ãÈ«¡±£¬ÈÕ־дÈëÎļþµÄ¸ß²¢·¢²Ù×÷ҲͬÑùÊÊÓÃÓÚÊý¾Ý¿âµÄ¸ß²¢·¢£¬ËùÒÔ£¬Ñо¿Õâ¸ö°¸ÀýÊǾßÓÐʵ¼ÊÒâÒåµÄ¡£
¶þ¡¢Ê¹ÓÃÔ¤ÖÃÀàÐÍʵÏÖÒì³£ÈÕÖ¾¶ÓÁÐ

ÔÚÈÕ³£µÄWebÓ¦ÓÃÖУ¬Òì³£ÈÕÖ¾µÄ¼Ç¼ÊÇÒ»¸öÊ®·ÖÖØÒªµÄÒªµã¡£ÒòΪ£¬ÈËÎÞÍêÈË£¬ÏµÍ³Ò²Ò»Ñù£¬ÄÑÃâ»áÔÚʲôʱºò³öÒ»¸ö²âÊÔ½×¶ÎδÄÜÍêÈ«²âÊÔµ½µÄÒì³£¡£Õâʱºò£¬²»Äܽ«Òì³£ÐÅÏ¢Ö±½ÓÏÔʾ¸ø¿Í»§£¬ÄÇÑù¼È²»ÓѺÃÒ²²»°²È«¡£ËùÒÔ£¬Ò»°ã¶¼²ÉÓý«Òì³£ÐÅÏ¢¼Ç¼µ½ÈÕÖ¾ÎļþÖУ¨±ÈÈçij¸ötxtÎļþ£¬Êý¾Ý¿âÖÐij¸ö±íµÈ£©£¬È»ºó¼¼ÊõÖ§³ÖÈËԱͨ¹ý²é¿´Òì³£ÈÕÖ¾£¬·ÖÎöÒì³£ÔÒò£¬¸Ä½øBUGÖØÐ·¢²¼£¬±£ÕÏϵͳÕý³£ÔËÐС£
ÔÚÓû§µÄ¸÷ÖÖ²Ù×÷ÖУ¬Èç¹û³öÏÖÒì³£µÄʱ¼äÒ»Ö£¬ÄÇô¼Ç¼Òì³£ÈÕÖ¾µÄ²Ù×÷¾Í»á³ÉΪ²¢·¢²Ù×÷£¬¶ø¼Ç¼Òì³£ÈÕÖ¾ÓÖÊôÓÚÎļþµÄIO²Ù×÷£¨ÆäʵÊý¾Ý¿âµÄ¶Áд¹é¸ù½áµ×Ò²ÊǶÔÎļþ¼´¶Ô´ÅÅ̽øÐеÄIO²Ù×÷£©£¬Òò´ËºÜÓпÉÄÜ´øÀ´²¢·¢¿ØÖƵÄһϵÁÐÎÊÌâ¡£ÔÚÒÔÍùµÄ±àÂëʵ¼ùÖУ¬ÎÒÃÇ¿ÉÒÔͨ¹ý¸ø²»Í¬µÄIOÇëÇó½øÐмÓËø£¨C#ÖеÄlock£©£¬µÈµÚÒ»¸öÇëÇóÍê³ÉдÈëºóÊÍ·ÅËø£¬µÚ¶þ¸öÇëÇóÔÙ»ñµÃËø£¬½øÐÐIO²Ù×÷£¬È»ºóÊͷŵô£¬Ò»Ö±µ½µÚN¸öÇëÇóÊͷźó½áÊø¡£ÕâÖÖ·½Ê½£¬ËäÈ»½â¾öÁ˲¢·¢²Ù×÷´øÀ´µÄÎÊÌ⣬µ«ÊÇͨ¹ý¼ÓËøÑÓ³ÙÁËÓû§ÏìÓ¦ÇëÇóµÄʱ¼ä£¨±ÈÈçµÚÒ»¸öÕýÔÚIOдÈë²Ù×÷ʱ£¬ºóÃæµÄ¾ù´¦Óڵȴý״̬£©£¬²¢ÇÒ¼ÓËøÒ²»á¸ø·þÎñÆ÷´øÀ´Ò»¶¨µÄÐÔÄܸºµ££¬Ôì³É·þÎñÆ÷ÐÔÄܵÄϽµ¡£
»ùÓÚÒÔÉÏÔÒò£¬ÎÒÃDzÉÓÃÏûÏ¢¶ÓÁеÄ˼Ï뽫Òì³£ÈÕÖ¾µÄ¼Ç¼²Ù×÷¸ÄΪ¶ÓÁа棬ÕâÀïÎÒÃÇÏȲ»²ÉÓÃRedis£¬Ö±½ÓʹÓÃ.NetΪÎÒÃÇÌṩµÄÔ¤ÖÃÀàÐÍ-Queue¡£½ÓÏÂÀ´£¬¾ÍÈÃÎÒÃǶ¯ÊÖ¿ªµ¶£¬Ð´ÆðÀ´¡£
£¨1£©Ð½¨Ò»¸öASP.NET MVC 4ÏîÄ¿£¬Ñ¡Ôñ¡°»ù±¾¡±ÀàÐÍ£¬ÊÓͼÒýÇæÑ¡Ôñ¡°Razor¡±¡£

£¨2£©¼ÈÈ»ÊÇÒì³£ÈÕÖ¾¼Ç¼£¬Ê×ÏȵÃÓÐÒì³£¡£Õâʱ£¬ÎÒÃÇÄÔº£ÖÐÏëµ½ÁËÄǸö¾µäµÄÒì³££ºDividedByZeroException¡£ÓÚÊÇ£¬ÔÚControllersÎļþ¼ÐÖÐн¨Ò»¸öController£¬È¡ÃûΪHome£¨ÕâÀïÒòΪGlobalÎļþÖеÄĬÈÏ·ÓɾÍÖ¸ÏòÁËHome¿ØÖÆÆ÷ÖеÄIndexÕâ¸öAction£©£¬ÔÚHomeControllerÖÐÐÞ¸ÄIndexÕâ¸öActionµÄ´úÂëÈçÏ£º
public ActionResult Index()
{
int a = 10;
int b = 0;
int c = a / b; //»áÅ×Ò»¸öDividedByZeroµÄÒì³£
return View();
} |
£¨3£©ÔÚASP.NET MVCÏîÄ¿ÖУ¬ÎÒÃÇÐèÒªÔÚGlobal.asaxÖеÄApplication_StartÕâ¸öʼþÖÐÐÞ¸ÄÈ«¾Ö¹ýÂËÆ÷£¨Ö÷ÒªÊÇApp_StartÖеÄFilterConfigÀàµÄRegisterGlobalFiltersÕâ¸ö·½·¨£©£¬ÈÃϵͳ֧³Ö¶ÔÒì³£µÄÈ«¾Ö´¦Àí²Ù×÷£¨ÎÒÃÇÕâÀïÖ÷ÒªÊǶÔÒì³£½øÐмǼµ½Ö¸¶¨ÎļþÖУ©¡£PS£ºApplication_StartÊÇÕû¸öWebÓ¦ÓÃµÄÆðʼʼþ£¬Ö÷Òª½øÐÐһЩÅäÖã¨Èç¹ýÂËÆ÷ÅäÖá¢ÈÕÖ¾Æ÷ÅäÖá¢Â·ÓÉÅäÖõȵȣ©µÄ³õʼ»¯²Ù×÷£¬µ±È»ÕâЩÅäÖÃÒ²Ö»»á½øÐÐÒ»´Î¡£
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
// MyExceptionFilterAttribute¼Ì³Ð×ÔHandleError£¬Ö÷Òª×÷ÓÃÊǽ«Òì³£ÐÅϢдÈëÈÕÖ¾ÎļþÖÐ
filters.Add(new MyExceptionFilterAttribute());
// ĬÈϵÄÒì³£¼Ç¼Àà
filters.Add(new HandleErrorAttribute());
}
} |
ͨ¹ý¸Äд¹ýÂËÆ÷ÅäÖã¬ÎÒÃÇÏòÈ«¾Ö¹ýÂËÆ÷ÖÐ×¢²áÁËÒ»¸öÒì³£´¦ÀíµÄ¹ýÂËÆ÷ÅäÖã¬ÄÇôÕâ¸öMyExceptionFilterAttributeÀàÓÖÊÇÈçºÎ±àдµÄÄØ£¿
public class MyExceptionFilterAttribute : HandleErrorAttribute
{
//°æ±¾1£ºÊ¹ÓÃÔ¤ÖöÓÁÐÀàÐÍ´æ´¢Òì³£¶ÔÏó
public static Queue ExceptionQueue = new Queue();
public override void OnException(ExceptionContext filterContext)
{
//½«Òì³£ÐÅÏ¢Èë¶Ó
ExceptionQueue.Enqueue(filterContext.Exception);
//Ìø×ªµ½×Ô¶¨Òå´íÎóÒ³
filterContext.HttpContext.Response.Redirect("~/Common/CommonError.html");
base.OnException(filterContext);
}
} |
ͨ¹ýʹ¸ÃÀà¼Ì³ÐHandlerErrorAttribute²¢Ê¹Æä¸²Ð´OnExceptionÕâ¸öʼþ£¬´ú±íÔÚÒì³£·¢Éúʱ¿ÉÒÔ½øÐеIJÙ×÷¡£¶øÎÒÃÇÔÚÕâ¶ùÖ÷Ҫͨ¹ýÒ»¸öÒì³£¶ÓÁн«»ñÈ¡µÄÒ쳣дÈë¶ÓÁУ¬È»ºóÌø×ªµ½×Ô¶¨Òå´íÎóÒ³£º~/Common/CommonError.html£¬Õâ¸ö´íÎóÒ³ºÜ¼òµ¥£¬¾ÍÊǼòµ¥µÄÏÔʾ¡°ÏµÍ³·¢Éú´íÎó£¬5Ãëºó×Ô¶¯Ìø×ªµ½Ê×Ò³¡±
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width" /> <title>´íÎó</title> <style type="text/css"> .timecss { color: red; font-weight: bold; } </style> <script type="text/javascript"> function delayJump(url) { var timeValue = parseInt(document.getElementById("time").innerHTML); if (timeValue > 0) { timeValue--; document.getElementById("time").innerHTML = timeValue; } else { window.location.href = url; } setTimeout("delayJump('" + url + "')", 1000); } </script> </head> <body> <h2>±§Ç¸£¬´¦ÀíÄúµÄÇëÇóʱ³ö´í¡£½«»áÔÚ<span id="time" class="timecss">5</span>Ãëºó×Ô¶¯Ìø×ªµ½Ê×Ò³£¬ÇëÄÍÐĵȺò¡£ </h2> </body> <script type="text/javascript"> var destUrl = "/Home/NoError"; delayJump(destUrl); </script> </html> |
£¨4£©×ßµ½ÕâÀÉú²úÕßÏû·ÑÕßģʽÖÐÉú²úÕßµÄÈÎÎñÒѾÍê³ÉÁË£¬½ÓÏÂÀ´Ïû·ÑÕß¾ÍÐèÒª¿ªÊ¼Ïû·ÑÁË¡£Ò²¾ÍÊÇ˵£¬ÏûÏ¢¶ÓÁÐÒѾ½¨ºÃÁË£¬ÎÒÃÇʲôʱºò´Ó¶ÓÁÐÖÐÈ¥ÈÎÎñ£¬ÔÚÄÄÀïÖ´ÐУ¿ÔõôÑùÖ´ÐУ¿Í¨¹ýÉÏÃæµÄ½éÉÜ£¬ÎÒÃÇÖªµÀ£¬ÔÚרÃŵÄÏûÏ¢¶ÓÁзþÎñÆ÷ÖÐÓÐÒ»¸ö½ø³ÌÔÚʼÖÕ²»Í£µØ¼àÊÓÏûÏ¢¶ÓÁУ¬Èç¹ûÓÐÐèÒª´ý°ìµÄÈÎÎñÐÅÏ¢£¬Ôò»áÁ¢¼´´Ó¶ÓÁÐÖÐÈ¡³öÀ´Ö´ÐÐÏàÓ¦µÄ²Ù×÷£¬Ö±µ½¶ÓÁÐΪ¿ÕΪֹ¡£ÓÚÊÇ£¬Ë¼Â·ÓÐÁË£¬ÎÒÃÇÂíÉÏÀ´ÊµÏÖÒÔÏ¡£Õâ¸öÏûÏ¢¼àÊӵIJÙ×÷Ò²ÊÇÒ»¸öÈ«¾Ö²Ù×÷£¬ÔÚϵͳÆô¶¯Ê±¾Í»áÒ»Ö±ÔËÐУ¬ÓÚÊÇËüÒ²Ó¦¸ÃдÔÚApplication_StartÕâ¸öÈ«¾ÖÆðʼʼþÀï±ß£¬ÓÚÊǰ´ÕÕ±ê×¼µÄÅäÖÃд·¨£¬ÎÒÃÇÔÚApplication_StartÖÐÌí¼ÓÁËÈçÏ´úÂ룺MessageQueueConfig.RegisterExceptionLogQueue()£»
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
//×Ô¶¨Òåʼþ×¢²á
MessageQueueConfig.RegisterExceptionLogQueue();
} |
ÄÇô£¬Õâ¸öMessageQueueConfig.RegisterExceptionLogQueue()ÓÖÊÇÔõôдµÄÄØ£¿
public class MessageQueueConfig
{
public static void RegisterExceptionLogQueue()
{
string logFilePath = HttpContext.Current.Server.MapPath("/App_Data/");
//ͨ¹ýÏ̳߳ؿªÆôỊ̈߳¬²»Í£µØ´Ó¶ÓÁÐÖлñÈ¡Òì³£ÐÅÏ¢²¢½«ÆäдÈëÈÕÖ¾Îļþ
ThreadPool.QueueUserWorkItem(o =>
{
while (true)
{
try
{
if (MyExceptionFilterAttribute.ExceptionQueue.Count > 0)
{
Exception ex = MyExceptionFilterAttribute.ExceptionQueue.Dequeue(); //´Ó¶ÓÁÐÖгö¶Ó£¬»ñÈ¡Òì³£¶ÔÏó
if (ex != null)
{
//¹¹½¨ÍêÕûµÄÈÕÖ¾ÎļþÃû
string logFileName = logFilePath + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
//»ñµÃÒì³£¶ÑÕ»ÐÅÏ¢
string exceptionMsg = ex.ToString();
//½«Òì³£ÐÅϢдÈëÈÕÖ¾ÎļþÖÐ
File.AppendAllText(logFileName, exceptionMsg, Encoding.Default);
}
}
else
{
Thread.Sleep(1000); //Ϊ±ÜÃâCPU¿Õת£¬ÔÚ¶ÓÁÐΪ¿ÕʱÐÝÏ¢1Ãë
}
}
catch (Exception ex)
{
MyExceptionFilterAttribute.ExceptionQueue.Enqueue(ex);
}
}
}, logFilePath);
}
} |
ÏÖÔÚ£¬ÈÃÎÒÃÇÀ´¿´¿´Õâ¶Î´úÂ룺
¢ÙÊ×Ïȶ¨ÒåLogÎļþ´æ·ÅµÄÎļþ¼ÐĿ¼£¬ÕâÀïÎÒÃÇÒ»°ã·Åµ½App_DataÀï±ß£¬ÒòΪ·Åµ½ÕâÀï±ßÍâÍøÊÇÎÞ·¨·ÃÎʵ½µÄ£¬¿ÉÒÔ·ÀÖ¹ÏÂÔØ²Ù×÷£»
¢ÚÆä´Îͨ¹ýÏ̳߳ØThreadPool¿ªÆôÒ»¸öỊ̈߳¬²»Í£µØ¼àÌýÏûÏ¢¶ÓÁÐÀï±ßµÄ´ý°ìÊÂÏî¸öÊý£¬Èç¹û¸öÊý>0£¬Ôò½øÐгö¶Ó£¨FIFO£¬ÏÈÈë¶ÓµÄÏȳö¶Ó£©²Ù×÷¡£ÕâÀïÖ÷ÒªÊÇÈ¡³ö¾ßÌåµÄÒ쳣ʵÀý¶ÔÏ󣬲¢½«Òì³£µÄ¾ßÌå¶ÑÕ»ÐÅÏ¢×·¼ÓдÈëµ½Ö¸¶¨ÃüÃû¸ñʽµÄÎļþÖС£
¢ÛÈç¹û¸ÃÏ̼߳ì²âµ½ÏûÏ¢¶ÓÁÐÖÐÎÞ´ý°ìÊÂÏÔòʹÓÃThread.SleepʹÏ̡߳°ÐÝÏ¢¡±Ò»»á£¬±ÜÃâÁËCPU¿Õת£¨´ÓÀíÂÛÉÏÀ´Ëµ£¬CPU×ÊÔ´ÊǺÜÕä¹óµÄ£¬Ó¦¸Ã¾¡Á¿Ìá¸ßCPUµÄÀûÓÃÂÊ£©¡£
£¨5£©×îºó£¬ÎÒÃÇÀ´¿´¿´Ð§¹ûÈçºÎ£¿
¢ÙÊ×ÏÈ£¬¸ß´óÉϵÄVS²¶×½µ½ÁËÒì³£-DividedByZeroException£º

¢Ú°´ÕÕÎÒÃǵÄÈ«¾ÖÒì³£´¦Àí¹ýÂËÆ÷£¬»á½«´ËÒì³£¼ÇÈë¶ÓÁÐÖУ¬²¢·µ»ØHTTP 302ÖØ¶¨ÏòÌø×ªµ½×Ô¶¨Òå´íÎóÒ³Ãæ£º

¢Û×îºó£¬´ò¿ªApp_DataÎļþ¼Ð£¬²é¿´ÈÕÖ¾Îļþ£º

µ½ÕâÀïʱ£¬ÎÒÃÇÒѾ½èÖúÏûÏ¢¶ÓÁеÄ˼ÏëÍê³ÉÁËÒ»¸ö×Ô¶¨ÒåµÄÒì³£ÈÕÖ¾¶ÓÁзþÎñ¡£µ«Ò²ÐíÓÐÅóÓÑ»á˵£¬Õâ¸ö¸úRedisÓйØÏµÃ´£¿Òì³£ÈÕÖ¾²»¶¼ÊÇÓÃLog4Netô£¿²»Òª×ż±£¬ºó±ßÎÒÃǾͻáʹÓÃRedis+Log4NetÀ´Öع¹Õâ¸öÒì³£ÈÕÖ¾¶ÓÁзþÎñ£¬²»Òª×ß¿ª£¬ÎÒÃDz»µÃ²å²¥¹ã¸æÅ¶£¬Ã´Ã´àª£¡
|