ºìÁªLinuxÃÅ»§
Linux°ïÖú

ÅäÖÿª·¢Ö§³Ö¸ß²¢·¢TCPÁ¬½ÓµÄLinuxÓ¦ÓóÌÐòÈ«¹¥ÂÔ

·¢²¼Ê±¼ä:2008-05-04 15:42:54À´Ô´:ºìÁª×÷Õß:panaiec
1¡¢ÐÞ¸ÄÓû§½ø³Ì¿É´ò¿ªÎļþÊýÏÞÖÆ
ÔÚLinuxƽ̨ÉÏ£¬ÎÞÂÛ±àд¿Í»§¶Ë³ÌÐò»¹ÊÇ·þÎñ¶Ë³ÌÐò£¬ÔÚ½øÐи߲¢·¢TCPÁ¬½Ó´¦Àíʱ£¬×î¸ßµÄ²¢·¢ÊýÁ¿¶¼ÒªÊܵ½ÏµÍ³¶ÔÓû§µ¥Ò»½ø³Ìͬʱ¿É´ò¿ªÎļþÊýÁ¿µÄÏÞÖÆ(ÕâÊÇÒòΪϵͳΪÿ¸öTCPÁ¬½Ó¶¼Òª´´½¨Ò»¸ösocket¾ä±ú£¬Ã¿¸ösocket¾ä±úͬʱҲÊÇÒ»¸öÎļþ¾ä±ú)¡£¿ÉʹÓÃulimitÃüÁî²é¿´ÏµÍ³ÔÊÐíµ±Ç°Óû§½ø³Ì´ò¿ªµÄÎļþÊýÏÞÖÆ£º

[speng@as4 ~]$ ulimit -n
1024

Õâ±íʾµ±Ç°Óû§µÄÿ¸ö½ø³Ì×î¶àÔÊÐíͬʱ´ò¿ª1024¸öÎļþ£¬Õâ1024¸öÎļþÖл¹µÃ³ýȥÿ¸ö½ø³Ì±ØÈ»´ò¿ªµÄ±ê×¼ÊäÈ룬±ê×¼Êä³ö£¬±ê×¼´íÎ󣬷þÎñÆ÷¼àÌýsocket£¬½ø³Ì¼äͨѶµÄunixÓòsocketµÈÎļþ£¬ÄÇôʣϵĿÉÓÃÓÚ¿Í»§¶ËsocketÁ¬½ÓµÄÎļþÊý¾ÍÖ»Óдó¸Å1024-10=1014¸ö×óÓÒ¡£Ò²¾ÍÊÇ˵ȱʡÇé¿öÏ£¬»ùÓÚLinuxµÄͨѶ³ÌÐò×î¶àÔÊÐíͬʱ1014¸öTCP²¢·¢Á¬½Ó¡£

¶ÔÓÚÏëÖ§³Ö¸ü¸ßÊýÁ¿µÄTCP²¢·¢Á¬½ÓµÄͨѶ´¦Àí³ÌÐò£¬¾Í±ØÐëÐÞ¸ÄLinux¶Ôµ±Ç°Óû§µÄ½ø³Ìͬʱ´ò¿ªµÄÎļþÊýÁ¿µÄÈíÏÞÖÆ(soft limit)ºÍÓ²ÏÞÖÆ(hardlimit)¡£ÆäÖÐÈíÏÞÖÆÊÇÖ¸LinuxÔÚµ±Ç°ÏµÍ³Äܹ»³ÐÊܵķ¶Î§ÄÚ½øÒ»²½ÏÞÖÆÓû§Í¬Ê±´ò¿ªµÄÎļþÊý£»Ó²ÏÞÖÆÔòÊǸù¾ÝϵͳӲ¼þ×ÊÔ´×´¿ö(Ö÷ÒªÊÇϵͳÄÚ´æ)¼ÆËã³öÀ´µÄϵͳ×î¶à¿Éͬʱ´ò¿ªµÄÎļþÊýÁ¿¡£Í¨³£ÈíÏÞÖÆÐ¡ÓÚ»òµÈÓÚÓ²ÏÞÖÆ¡£

ÐÞ¸ÄÉÏÊöÏÞÖÆµÄ×î¼òµ¥µÄ°ì·¨¾ÍÊÇʹÓÃulimitÃüÁ
[speng@as4 ~]$ ulimit -n

ÉÏÊöÃüÁîÖУ¬ÔÚÖÐÖ¸¶¨ÒªÉèÖõĵ¥Ò»½ø³ÌÔÊÐí´ò¿ªµÄ×î´óÎļþÊý¡£Èç¹ûϵͳ»ØÏÔÀàËÆÓÚ¡°Operation notpermitted¡±Ö®ÀàµÄ»°£¬ËµÃ÷ÉÏÊöÏÞÖÆÐÞ¸Äʧ°Ü£¬Êµ¼ÊÉÏÊÇÒòΪÔÚÖÐÖ¸¶¨µÄÊýÖµ³¬¹ýÁËLinuxϵͳ¶Ô¸ÃÓû§´ò¿ªÎļþÊýµÄÈíÏÞÖÆ»òÓ²ÏÞÖÆ¡£Òò´Ë£¬¾ÍÐèÒªÐÞ¸ÄLinuxϵͳ¶ÔÓû§µÄ¹ØÓÚ´ò¿ªÎļþÊýµÄÈíÏÞÖÆºÍÓ²ÏÞÖÆ¡£

µÚÒ»²½£¬ÐÞ¸Ä/etc/security/limits.confÎļþ£¬ÔÚÎļþÖÐÌí¼ÓÈçÏÂÐУº
speng soft nofile 10240
speng hard nofile 10240

ÆäÖÐspengÖ¸¶¨ÁËÒªÐÞ¸ÄÄĸöÓû§µÄ´ò¿ªÎļþÊýÏÞÖÆ£¬¿ÉÓÃ'*'ºÅ±íʾÐÞ¸ÄËùÓÐÓû§µÄÏÞÖÆ£»soft»òhardÖ¸¶¨ÒªÐÞ¸ÄÈíÏÞÖÆ»¹ÊÇÓ²ÏÞÖÆ£»10240ÔòÖ¸¶¨ÁËÏëÒªÐ޸ĵÄеÄÏÞÖÆÖµ£¬¼´×î´ó´ò¿ªÎļþÊý(Çë×¢ÒâÈíÏÞÖÆÖµÒªÐ¡ÓÚ»òµÈÓÚÓ²ÏÞÖÆ)¡£ÐÞ¸ÄÍêºó±£´æÎļþ¡£

µÚ¶þ²½£¬ÐÞ¸Ä/etc/pam.d/loginÎļþ£¬ÔÚÎļþÖÐÌí¼ÓÈçÏÂÐУº
session required /lib/security/pam_limits.so

ÕâÊǸæËßLinuxÔÚÓû§Íê³ÉϵͳµÇ¼ºó£¬Ó¦¸Ãµ÷ÓÃpam_limits.soÄ£¿éÀ´ÉèÖÃϵͳ¶Ô¸ÃÓû§¿ÉʹÓõĸ÷ÖÖ×ÊÔ´ÊýÁ¿µÄ×î´óÏÞÖÆ(°üÀ¨Óû§¿É´ò¿ªµÄ×î´óÎļþÊýÏÞÖÆ)£¬¶øpam_limits.soÄ£¿é¾Í»á´Ó/etc/security/limits.confÎļþÖжÁÈ¡ÅäÖÃÀ´ÉèÖÃÕâЩÏÞÖÆÖµ¡£ÐÞ¸ÄÍêºó±£´æ´ËÎļþ¡£

µÚÈý²½£¬²é¿´Linuxϵͳ¼¶µÄ×î´ó´ò¿ªÎļþÊýÏÞÖÆ£¬Ê¹ÓÃÈçÏÂÃüÁ
[speng@as4 ~]$ cat /proc/sys/fs/file-max
12158

Õâ±íÃ÷Õą̂Linuxϵͳ×î¶àÔÊÐíͬʱ´ò¿ª(¼´°üº¬ËùÓÐÓû§´ò¿ªÎļþÊý×ܺÍ)12158¸öÎļþ£¬ÊÇLinuxϵͳ¼¶Ó²ÏÞÖÆ£¬ËùÓÐÓû§¼¶µÄ´ò¿ªÎļþÊýÏÞÖÆ¶¼²»Ó¦³¬¹ýÕâ¸öÊýÖµ¡£Í¨³£Õâ¸öϵͳ¼¶Ó²ÏÞÖÆÊÇLinuxϵͳÔÚÆô¶¯Ê±¸ù¾ÝϵͳӲ¼þ×ÊÔ´×´¿ö¼ÆËã³öÀ´µÄ×î¼ÑµÄ×î´óͬʱ´ò¿ªÎļþÊýÏÞÖÆ£¬Èç¹ûûÓÐÌØÊâÐèÒª£¬²»Ó¦¸ÃÐ޸ĴËÏÞÖÆ£¬³ý·ÇÏëΪÓû§¼¶´ò¿ªÎļþÊýÏÞÖÆÉèÖó¬¹ý´ËÏÞÖÆµÄÖµ¡£Ð޸ĴËÓ²ÏÞÖÆµÄ·½·¨ÊÇÐÞ¸Ä/etc/rc.local½Å±¾£¬Ôڽű¾ÖÐÌí¼ÓÈçÏÂÐУº

echo 22158 > /proc/sys/fs/file-max

ÕâÊÇÈÃLinuxÔÚÆô¶¯Íê³ÉºóÇ¿Ðн«ÏµÍ³¼¶´ò¿ªÎļþÊýÓ²ÏÞÖÆÉèÖÃΪ22158¡£ÐÞ¸ÄÍêºó±£´æ´ËÎļþ¡£

Íê³ÉÉÏÊö²½ÖèºóÖØÆôϵͳ£¬Ò»°ãÇé¿öϾͿÉÒÔ½«Linuxϵͳ¶ÔÖ¸¶¨Óû§µÄµ¥Ò»½ø³ÌÔÊÐíͬʱ´ò¿ªµÄ×î´óÎļþÊýÏÞÖÆÉèΪָ¶¨µÄÊýÖµ¡£Èç¹ûÖØÆôºóÓÃulimit-nÃüÁî²é¿´Óû§¿É´ò¿ªÎļþÊýÏÞÖÆÈÔÈ»µÍÓÚÉÏÊö²½ÖèÖÐÉèÖõÄ×î´óÖµ£¬Õâ¿ÉÄÜÊÇÒòΪÔÚÓû§µÇ¼½Å±¾/etc/profileÖÐʹÓÃulimit-nÃüÁîÒѾ­½«Óû§¿Éͬʱ´ò¿ªµÄÎļþÊý×öÁËÏÞÖÆ¡£ÓÉÓÚͨ¹ýulimit-nÐÞ¸Äϵͳ¶ÔÓû§¿Éͬʱ´ò¿ªÎļþµÄ×î´óÊýÏÞÖÆÊ±£¬ÐÂÐ޸ĵÄÖµÖ»ÄÜСÓÚ»òµÈÓÚÉÏ´Îulimit-nÉèÖõÄÖµ£¬Òò´ËÏëÓôËÃüÁîÔö´óÕâ¸öÏÞÖÆÖµÊDz»¿ÉÄܵġ£ËùÒÔ£¬Èç¹ûÓÐÉÏÊöÎÊÌâ´æÔÚ£¬¾ÍÖ»ÄÜÈ¥´ò¿ª/etc/profile½Å±¾Îļþ£¬ÔÚÎļþÖвéÕÒÊÇ·ñʹÓÃÁËulimit-nÏÞÖÆÁËÓû§¿Éͬʱ´ò¿ªµÄ×î´óÎļþÊýÁ¿£¬Èç¹ûÕÒµ½£¬Ôòɾ³ýÕâÐÐÃüÁ»òÕß½«ÆäÉèÖõÄÖµ¸ÄΪºÏÊʵÄÖµ£¬È»ºó±£´æÎļþ£¬Óû§Í˳ö²¢ÖØÐµÇ¼ϵͳ¼´¿É¡£

ͨ¹ýÉÏÊö²½Ö裬¾ÍΪ֧³Ö¸ß²¢·¢TCPÁ¬½Ó´¦ÀíµÄͨѶ´¦Àí³ÌÐò½â³ý¹ØÓÚ´ò¿ªÎļþÊýÁ¿·½ÃæµÄϵͳÏÞÖÆ¡£

2¡¢ÐÞ¸ÄÍøÂçÄں˶ÔTCPÁ¬½ÓµÄÓйØÏÞÖÆ
ÔÚLinuxÉϱàд֧³Ö¸ß²¢·¢TCPÁ¬½ÓµÄ¿Í»§¶ËͨѶ´¦Àí³ÌÐòʱ£¬ÓÐʱ»á·¢ÏÖ¾¡¹ÜÒѾ­½â³ýÁËϵͳ¶ÔÓû§Í¬Ê±´ò¿ªÎļþÊýµÄÏÞÖÆ£¬µ«ÈÔ»á³öÏÖ²¢·¢TCPÁ¬½ÓÊýÔö¼Óµ½Ò»¶¨ÊýÁ¿Ê±£¬ÔÙÒ²ÎÞ·¨³É¹¦½¨Á¢ÐµÄTCPÁ¬½ÓµÄÏÖÏó¡£³öÏÖÕâÖÖÏÖÔÚµÄÔ­ÒòÓжàÖÖ¡£

µÚÒ»ÖÖÔ­Òò¿ÉÄÜÊÇÒòΪLinuxÍøÂçÄں˶Ա¾µØ¶Ë¿ÚºÅ·¶Î§ÓÐÏÞÖÆ¡£´Ëʱ£¬½øÒ»²½·ÖÎöΪʲôÎÞ·¨½¨Á¢TCPÁ¬½Ó£¬»á·¢ÏÖÎÊÌâ³öÔÚconnect()µ÷Ó÷µ»ØÊ§°Ü£¬²é¿´ÏµÍ³´íÎóÌáʾÏûÏ¢ÊÇ¡°Can't assign requestedaddress¡±¡£Í¬Ê±£¬Èç¹ûÔÚ´ËʱÓÃtcpdump¹¤¾ß¼àÊÓÍøÂ磬»á·¢ÏÖ¸ù±¾Ã»ÓÐTCPÁ¬½Óʱ¿Í»§¶Ë·¢SYN°üµÄÍøÂçÁ÷Á¿¡£ÕâЩÇé¿ö˵Ã÷ÎÊÌâÔÚÓÚ±¾µØLinuxϵͳÄÚºËÖÐÓÐÏÞÖÆ¡£Æäʵ£¬ÎÊÌâµÄ¸ù±¾Ô­ÒòÔÚÓÚLinuxÄں˵ÄTCP/IPЭÒéʵÏÖÄ£¿é¶ÔϵͳÖÐËùÓеĿͻ§¶ËTCPÁ¬½Ó¶ÔÓ¦µÄ±¾µØ¶Ë¿ÚºÅµÄ·¶Î§½øÐÐÁËÏÞÖÆ(ÀýÈ磬ÄÚºËÏÞÖÆ±¾µØ¶Ë¿ÚºÅµÄ·¶Î§Îª1024~32768Ö®¼ä)¡£µ±ÏµÍ³ÖÐijһʱ¿Ìͬʱ´æÔÚÌ«¶àµÄTCP¿Í»§¶ËÁ¬½Óʱ£¬ÓÉÓÚÿ¸öTCP¿Í»§¶ËÁ¬½Ó¶¼ÒªÕ¼ÓÃÒ»¸öΨһµÄ±¾µØ¶Ë¿ÚºÅ(´Ë¶Ë¿ÚºÅÔÚϵͳµÄ±¾µØ¶Ë¿ÚºÅ·¶Î§ÏÞÖÆÖÐ)£¬Èç¹ûÏÖÓеÄTCP¿Í»§¶ËÁ¬½ÓÒѽ«ËùÓеı¾µØ¶Ë¿ÚºÅÕ¼Âú£¬Ôò´Ëʱ¾ÍÎÞ·¨ÎªÐµÄTCP¿Í»§¶ËÁ¬½Ó·ÖÅäÒ»¸ö±¾µØ¶Ë¿ÚºÅÁË£¬Òò´Ëϵͳ»áÔÚÕâÖÖÇé¿öÏÂÔÚconnect()µ÷ÓÃÖзµ»ØÊ§°Ü£¬²¢½«´íÎóÌáʾÏûÏ¢ÉèΪ¡°Can't assignrequested address¡±¡£ÓйØÕâЩ¿ØÖÆÂß¼­¿ÉÒԲ鿴LinuxÄÚºËÔ´´úÂ룬ÒÔlinux2.6ÄÚºËΪÀý£¬¿ÉÒԲ鿴tcp_ipv4.cÎļþÖÐÈçϺ¯Êý£º

static int tcp_v4_hash_connect(struct sock *sk)

Çë×¢ÒâÉÏÊöº¯ÊýÖжԱäÁ¿sysctl_local_port_rangeµÄ·ÃÎÊ¿ØÖÆ¡£±äÁ¿sysctl_local_port_rangeµÄ³õʼ»¯ÔòÊÇÔÚtcp.cÎļþÖеÄÈçϺ¯ÊýÖÐÉèÖãº

void __init tcp_init(void)

Äں˱àÒëʱĬÈÏÉèÖõı¾µØ¶Ë¿ÚºÅ·¶Î§¿ÉÄÜ̫С£¬Òò´ËÐèÒªÐ޸Ĵ˱¾µØ¶Ë¿Ú·¶Î§ÏÞÖÆ¡£

µÚÒ»²½£¬ÐÞ¸Ä/etc/sysctl.confÎļþ£¬ÔÚÎļþÖÐÌí¼ÓÈçÏÂÐУº
net.ipv4.ip_local_port_range = 1024 65000

Õâ±íÃ÷½«ÏµÍ³¶Ô±¾µØ¶Ë¿Ú·¶Î§ÏÞÖÆÉèÖÃΪ1024~65000Ö®¼ä¡£Çë×¢Ò⣬±¾µØ¶Ë¿Ú·¶Î§µÄ×îСֵ±ØÐë´óÓÚ»òµÈÓÚ1024£»¶ø¶Ë¿Ú·¶Î§µÄ×î´óÖµÔòӦСÓÚ»òµÈÓÚ65535¡£ÐÞ¸ÄÍêºó±£´æ´ËÎļþ¡£

µÚ¶þ²½£¬Ö´ÐÐsysctlÃüÁ
[speng@as4 ~]$ sysctl -p

Èç¹ûϵͳûÓдíÎóÌáʾ£¬¾Í±íÃ÷еı¾µØ¶Ë¿Ú·¶Î§ÉèÖóɹ¦¡£Èç¹û°´ÉÏÊö¶Ë¿Ú·¶Î§½øÐÐÉèÖã¬ÔòÀíÂÛÉϵ¥¶ÀÒ»¸ö½ø³Ì×î¶à¿ÉÒÔͬʱ½¨Á¢60000¶à¸öTCP¿Í»§¶ËÁ¬½Ó¡£

µÚ¶þÖÖÎÞ·¨½¨Á¢TCPÁ¬½ÓµÄÔ­Òò¿ÉÄÜÊÇÒòΪLinuxÍøÂçÄں˵ÄIP_TABLE·À»ðǽ¶Ô×î´ó¸ú×ÙµÄTCPÁ¬½ÓÊýÓÐÏÞÖÆ¡£´Ëʱ³ÌÐò»á±íÏÖΪÔÚconnect()µ÷ÓÃÖÐ×èÈû£¬ÈçͬËÀ»ú£¬Èç¹ûÓÃtcpdump¹¤¾ß¼àÊÓÍøÂ磬Ҳ»á·¢ÏÖ¸ù±¾Ã»ÓÐTCPÁ¬½Óʱ¿Í»§¶Ë·¢SYN°üµÄÍøÂçÁ÷Á¿¡£ÓÉÓÚIP_TABLE·À»ðǽÔÚÄÚºËÖлá¶Ôÿ¸öTCPÁ¬½ÓµÄ״̬½øÐиú×Ù£¬¸ú×ÙÐÅÏ¢½«»á·ÅÔÚλÓÚÄÚºËÄÚ´æÖеÄconntrackdatabaseÖУ¬Õâ¸öÊý¾Ý¿âµÄ´óСÓÐÏÞ£¬µ±ÏµÍ³ÖдæÔÚ¹ý¶àµÄTCPÁ¬½Óʱ£¬Êý¾Ý¿âÈÝÁ¿²»×㣬IP_TABLEÎÞ·¨ÎªÐµÄTCPÁ¬½Ó½¨Á¢¸ú×ÙÐÅÏ¢£¬ÓÚÊDZíÏÖΪÔÚconnect()µ÷ÓÃÖÐ×èÈû¡£´Ëʱ¾Í±ØÐëÐÞ¸ÄÄں˶Ô×î´ó¸ú×ÙµÄTCPÁ¬½ÓÊýµÄÏÞÖÆ£¬·½·¨Í¬ÐÞ¸ÄÄں˶Ա¾µØ¶Ë¿ÚºÅ·¶Î§µÄÏÞÖÆÊÇÀàËÆµÄ£º

µÚÒ»²½£¬ÐÞ¸Ä/etc/sysctl.confÎļþ£¬ÔÚÎļþÖÐÌí¼ÓÈçÏÂÐУº
net.ipv4.ip_conntrack_max = 10240

Õâ±íÃ÷½«ÏµÍ³¶Ô×î´ó¸ú×ÙµÄTCPÁ¬½ÓÊýÏÞÖÆÉèÖÃΪ10240¡£Çë×¢Ò⣬´ËÏÞÖÆÖµÒª¾¡Á¿Ð¡£¬ÒÔ½ÚÊ¡¶ÔÄÚºËÄÚ´æµÄÕ¼Óá£

µÚ¶þ²½£¬Ö´ÐÐsysctlÃüÁ
[speng@as4 ~]$ sysctl -p

Èç¹ûϵͳûÓдíÎóÌáʾ£¬¾Í±íÃ÷ϵͳ¶ÔеÄ×î´ó¸ú×ÙµÄTCPÁ¬½ÓÊýÏÞÖÆÐ޸ijɹ¦¡£Èç¹û°´ÉÏÊö²ÎÊý½øÐÐÉèÖã¬ÔòÀíÂÛÉϵ¥¶ÀÒ»¸ö½ø³Ì×î¶à¿ÉÒÔͬʱ½¨Á¢10000¶à¸öTCP¿Í»§¶ËÁ¬½Ó¡£

3¡¢Ê¹ÓÃÖ§³Ö¸ß²¢·¢ÍøÂçI/OµÄ±à³Ì¼¼Êõ
ÔÚLinuxÉϱàд¸ß²¢·¢TCPÁ¬½ÓÓ¦ÓóÌÐòʱ£¬±ØÐëʹÓúÏÊʵÄÍøÂçI/O¼¼ÊõºÍI/Oʼþ·ÖÅÉ»úÖÆ¡£

¿ÉÓõÄI/O¼¼ÊõÓÐͬ²½I/O£¬·Ç×èÈûʽͬ²½I/O(Ò²³Æ·´Ó¦Ê½I/O)£¬ÒÔ¼°Òì²½I/O¡£ÔÚ¸ßTCP²¢·¢µÄÇéÐÎÏ£¬Èç¹ûʹÓÃͬ²½I/O£¬Õâ»áÑÏÖØ×èÈû³ÌÐòµÄÔËת£¬³ý·ÇΪÿ¸öTCPÁ¬½ÓµÄI/O´´½¨Ò»¸öÏ̡߳£µ«ÊÇ£¬¹ý¶àµÄÏß³ÌÓÖ»áÒòϵͳ¶ÔÏ̵߳ĵ÷¶ÈÔì³É¾Þ´ó¿ªÏú¡£Òò´Ë£¬ÔÚ¸ßTCP²¢·¢µÄÇéÐÎÏÂʹÓÃͬ²½I/OÊDz»¿ÉÈ¡µÄ£¬Õâʱ¿ÉÒÔ¿¼ÂÇʹÓ÷Ç×èÈûʽͬ²½I/O»òÒì²½I/O¡£·Ç×èÈûʽͬ²½I/OµÄ¼¼Êõ°üÀ¨Ê¹ÓÃselect()£¬poll()£¬epollµÈ»úÖÆ¡£Òì²½I/OµÄ¼¼Êõ¾ÍÊÇʹÓÃAIO¡£

´ÓI/Oʼþ·ÖÅÉ»úÖÆÀ´¿´£¬Ê¹ÓÃselect()ÊDz»ºÏÊʵģ¬ÒòΪËüËùÖ§³ÖµÄ²¢·¢Á¬½ÓÊýÓÐÏÞ(ͨ³£ÔÚ1024¸öÒÔÄÚ)¡£Èç¹û¿¼ÂÇÐÔÄÜ£¬poll()Ò²ÊDz»ºÏÊʵ쬾¡¹ÜËü¿ÉÒÔÖ§³ÖµÄ½Ï¸ßµÄTCP²¢·¢Êý£¬µ«ÊÇÓÉÓÚÆä²ÉÓá°ÂÖѯ¡±»úÖÆ£¬µ±²¢·¢Êý½Ï¸ßʱ£¬ÆäÔËÐÐЧÂÊÏ൱µÍ£¬²¢¿ÉÄÜ´æÔÚI/Oʼþ·ÖÅɲ»¾ù£¬µ¼Ö²¿·ÖTCPÁ¬½ÓÉϵÄI/O³öÏÖ¡°¼¢¶ö¡±ÏÖÏó¡£¶øÈç¹ûʹÓÃepoll»òAIO£¬ÔòûÓÐÉÏÊöÎÊÌâ(ÔçÆÚLinuxÄں˵ÄAIO¼¼ÊõʵÏÖÊÇͨ¹ýÔÚÄÚºËÖÐΪÿ¸öI/OÇëÇó´´½¨Ò»¸öÏß³ÌÀ´ÊµÏֵģ¬ÕâÖÖʵÏÖ»úÖÆÔڸ߲¢·¢TCPÁ¬½ÓµÄÇéÐÎÏÂʹÓÃÆäʵҲÓÐÑÏÖØµÄÐÔÄÜÎÊÌâ¡£µ«ÔÚ×îеÄLinuxÄÚºËÖУ¬AIOµÄʵÏÖÒѾ­µÃµ½¸Ä½ø)¡£

×ÛÉÏËùÊö£¬ÔÚ¿ª·¢Ö§³Ö¸ß²¢·¢TCPÁ¬½ÓµÄLinuxÓ¦ÓóÌÐòʱ£¬Ó¦¾¡Á¿Ê¹ÓÃepoll»òAIO¼¼ÊõÀ´ÊµÏÖ²¢·¢µÄTCPÁ¬½ÓÉϵÄI/O¿ØÖÆ£¬Õ⽫ΪÌáÉý³ÌÐò¶Ô¸ß²¢·¢TCPÁ¬½ÓµÄÖ§³ÖÌṩÓÐЧµÄI/O±£Ö¤¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ