• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            CLOSE_WAIT問題終于解決了。 轉

            Posted on 2009-04-01 19:49 Prayer 閱讀(1979) 評論(0)  編輯 收藏 引用 所屬分類: SOCKET
            CLOSE_WAIT問題終于解決了。

            首先我要多謝tonykorn97,他的Blog: http://tonykorn97.itpub.net/index.php

            一篇對我非常有用的文章!(我在下面引用了過來。)
            from : http://tonykorn97.itpub.net/index.php

            下面就說說我是怎么解決的吧:

            [oracle9i@RHEL3 oracle9i]$ /usr/sbin/lsof -i | grep 6800
            oracle    22725 oracle9i    3u  IPv4 18621468       TCP RHEL3:6800 (LISTEN)
            oracle    22725 oracle9i    4u  IPv4 18621469       TCP RHEL3:6800->RHEL3:2174 (CLOSE_WAIT)
            oracle    22725 oracle9i    8u  IPv4 18621568       TCP RHEL3:6800->RHEL3:2175 (CLOSE_WAIT)
            oracle    22725 oracle9i    9u  IPv4 18621578       TCP RHEL3:6800->RHEL3:2176 (CLOSE_WAIT)
            oracle    22726 oracle9i    3u  IPv4 18621468       TCP RHEL3:6800 (LISTEN)
            oracle    22726 oracle9i    4u  IPv4 18621469       TCP RHEL3:6800->RHEL3:2174 (CLOSE_WAIT)
            oracle    22726 oracle9i    8u  IPv4 18621568       TCP RHEL3:6800->RHEL3:2175 (CLOSE_WAIT)
            oracle    22726 oracle9i    9u  IPv4 18621578       TCP RHEL3:6800->RHEL3:2176 (CLOSE_WAIT)

            [oracle9i@RHEL3 oracle9i]$ kill -9 22725
            # 22725, 22726就是使用該6800端口的進程號(PID)。
            [oracle9i@RHEL3 oracle9i]$ /usr/sbin/lsof -i | grep 6800
            # 現在就沒有了,真是太好了。 這個問題在這服務器上已經出現3天多了還沒有下出,結果6800端口就沒辦法使用了。

            該問題的出現原因網上到處都是,也就是Socket的Client端出現異常沒有Close就退出了。
            lsof工具真的不錯!!!

            ----------------------------------------------
             lsof的功能很多,特別提醒大家, -c,-g,-p,-u,這四個參數最有用。更詳細的資料請參看:man lsof。

            1、查看文件系統阻塞

              根據工作需要,系統管理員想卸載一個文件系統并執行umount /mountpoint,但程序報告常常顯示:umount: /mountpoint: device is

            busy;這是因為該文件系統上有正在打開的文件而不允許你這么做。這時,我們需要知道哪些文件、程序及用戶仍在使用該系統,以便通知用

            戶退出該系統,可以使用lsof識別正在打開一個特定文件系統的進程,執行如下命令:
              /usr/sbin/lsof /mountpoint
              在這里,mountpoint就是安裝位置。例如:
              # /usr/sbin /lsof /home
              COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
              bash12134 meng cwdDIR8,5 4096 32705 /home/meng
              telnet 12176 meng cwdDIR8,5 4096 32705 /home/meng
              bash19809 meng cwdDIR8,5 4096 32705 /home/meng
              bash20276 meng cwdDIR8,5 4096 32705 /home/meng
              su 20315 root cwdDIR8,5 4096 32705 /home/meng
              bash20316 root cwdDIR8,5 4096 32705 /home/meng
              csh 20374 root cwdDIR8,5 4096 32705 /home/meng
              lsof 20396 root cwdDIR8,5 4096 32705 /home/meng
              lsof 20397 root cwdDIR8,5 4096 32705 /home/meng

              顯然,所有使用這些被打開的文件的進程都需要在文件系統能夠被卸載前被終止。管理員以root身份,kill掉占用這個文件系統的進程,

            解除文件系統阻塞。

              2、搜索打開的網絡連接

              如果想搜索IP地址為10.645.64.23的遠程連接主機的所有網絡連接,可以執行如下命令:
              /usr/sbin/lsof –i@10.65.64.23可以打開系統中該遠程知己所有打開的套接字。
              # lsof -i@10.65.64.23
              COMMAND PID USER FD TYPE DEVICE SIZE/OFF INODE NAME
              telnetd 6605 root0u inet 0x14813f00 0t0 TCP xpp3:telnet->linuxone:33143 (ESTABLISHED)
              telnetd 6605 root1u inet 0x14813f00 0t0 TCP xpp3:telnet->linuxone:33143 (ESTABLISHED)
              telnetd 6605 root2u inet 0x14813f00 0t0 TCP xpp3:telnet->linuxone:33143 (ESTABLISHED)

              3、尋找本地斷開的打開文件

              用戶經常遇到這種情況,當一個進程正在向一個文件寫數據時,該文件的目錄可能被移動。這就產生了一個非常大的問題。例如,用戶可

            能發現正在向/data寫數據,但是卻看不到文件增大,LSOF這個工具可以找到這樣的錯誤,例如:
              /usr/sbin/lsof +L1,通常可以看到下面的信息:
              # lsof +L1
              COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINKNODE NAME
              svrMgt_mi458 root 4r VREG 8,00 0 3418 / (/dev/rz0a)
              yes 677 root 1w VREG 8,0 186523648 0 92888 / (/de v/rz0a)
              # lsof +L1
              COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME
              svrMgt_mi458 root 4r VREG 8,0 0 0 3418 / (/dev/rz0a)
              yes 677 root1w VREG 8,0 2735882240 92888 / (/dev/rz0a)

              我們可以用kill -9 PID命令來結束PID顯示的命令排除錯誤,釋放空間。
              
              我們還可以用-a選項來限制lsof報告單文件系統中的鏈接數量。例如,為了限制到/data部分的輸出,可以輸入:/usr/sbin/lsof –a +L1

            /data

              4、搜索被程序打開的所有文件及打開的文件相關聯進程

              如果想知道執行PID號為637的sendmail命令打開了哪些文件的話,可以執行lsof -p 637命令。輸出的結果如下:

              # lsof -p 637
              COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
              sendmail 637 root cwd VDIR8,6 512 470400 /usr/var/spool/mqueue
              sendmail 637 root txt VREG8,6 466944 9650 /usr (/dev/rz0g)
              sendmail 637 root txt VREG8,0 139264 16016 /sbin/loader
              sendmail 637 root txt VREG8,0 1663104 38402 /shlib/libc.so
              sendmail 637 root0r VCHR2,2 0t0 9607 /dev/null
              sendmail 637 root1w VCHR2,2 0t0 9607 /dev/null
              sendmail 637 root2w VCHR2,2 0t0 9607 /dev/null
              sendmail 637 root3u unix 0x0c2fc280 0t0->0x1ead2b40
              sendmail 637 root4u inet 0x0c34c200 0t0TCP *:smtp (LISTEN)

              上述輸出信息顯示了該程序當前打開的所有文件、設備、庫及套接字等。

              執行下面的命令可以發現哪些進程正在使用某個特定的文件,如下所示,可以看出,只有系統記錄后臺進程syslogd打開messages這個文件



              # lsof /var/adm/messages
              COMMAND PID USER FD TYPE DEVICE SIZE/OFF INODE NAME
              syslogd 147 root 16w VREG8,6 2653365 22501 /usr/var/adm/messages

              5、其它使用命令(更詳細的資料請man lsof,這部分參看了一些資料給大家總結一下)
              若沒有加上任何的參數,lsof 會列出所有被程序打開的文件。
              參數可以相互結合,ex: -a -b -c 等同于 -abc
              -? -h 這兩個參數意思相同,顯示出 lsof 的使用說明。

              -a 參數被視為 AND (注意:-a參數一但加上 ,會影響全部的參數。)

              -c c 顯示出以字母 c開頭進程現在打開的文件
               例:顯示以init進程現在打開的文件
              # lsof -c init
              COMMAND PID USER FD TYPE DEVICE SIZE/OFF INODE NAME
              init 1 root cwd VDIR 4095,365376 8192 2 /
              init 1 root txt VREG 4095,365376 286720 463 /sbin/init

              +d s 依照文件夾s來搜尋,此參數將不會繼續深入搜尋此文件夾
              例:顯示在/usr/users/tongxl目錄下被程序正在打開的文件(如下所示)
              # lsof +d /usr/users/tongxl
              COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
              ksh 26946 root cwd VDIR8,6 512 51281 /usr/users/tongxl/c
              a.out 26953 root cwd VDIR8,6 512 51281 /usr/users/tongxl/c

              +D D 同上,但是會搜索目錄下的目錄,時間較長。(注意︰lsof以此參數進行時,須花費較多的動態記憶體。尤其在處理較大的文件夾時

            ,請務必審慎使用之。)
              例:顯示在/usr/local/文件夾下被程序正在打開的文件(如下)很明顯可以看出二者的差別
              # lsof +D /usr/users/tongxl
              COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
              ksh 26946 root cwd VDIR8,6 512 51281 /usr/users/tongxl/c
              a.out 26953 root cwd VDIR8,6 512 51281 /usr/users/tongxl/c
              a.out 26953 root txt VREG8,624576 51311 /usr/users/tongxl/c/a.out

              -d s 此參數以file descriptor (FD)值顯示結果,可以采用范圍表示,如 1-3 或 3-10 但 最前面的數一定要比最后面的數小。
               舉例:以FD為4顯示
              # lsof -d 4
              COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
              syslogd 147 root4u inet 0x1fe0b980 0t0UDP *:syslog
              binlogd 151 root4u inet 0x1fe0bd40 0t0UDP *:*
              portmap 319 root4u inet 0x1fe0b740 0t0UDP *:111
              mountd321 root4u VREG8,6 253 22516 /usr (/dev/rz0g)
              nfsd 323 root4u inet 0x0c349e00 0t0TCP *:2049 (LISTEN)
              rpc.statd 330 root4u inet 0x1ab42000 0t0TCP xpp3:1024 (LISTEN)
              rpc.lockd 332 root4u inet 0x1fe0bbc0 0t0UDP xpp3:1028
              snmpd 449 root4u unix 0x1aaf6500 0t0/var/esnmp/esnmpd
              svrMgt_mi 457 root4r VREG8,00 3424 / (/dev/rz0a)
              os_mibs 458 root4u inet 0x1ab475c0 0t0UDP *:*
              cpq_mibs 460 root4u unix 0x1aaf77c0 0t0/var/esnmp/esnmp_sub460
              advfsd472 root4u inet 0x0c320000 0t0TCP *:AdvFS (LISTEN)
              insightd 475 root4r VDIR8,6 512 25610 /usr (/dev/rz0g)
              inetd 506 root4u inet 0x1ab26700 0t0TCP *:ftp (LISTEN)
              lpd 567 root4wW VREG8,64 451219 /usr (/dev/rz0g)
              dtlogin 605 root4w VREG8,64 344028 /usr (/dev/rz0g)
              Xdec 616 root4w VREG8,64 344028 /usr (/dev/rz0g)
              sendmail 702 root4u inet 0x0c321900 0t0TCP *:smtp (LISTEN)
              dtlogin 891 root4w VREG8,64 344028 /usr (/dev/rz0g)
              dxconsole 907 root4w VREG8,64 344028 /usr (/dev/rz0g)
              dtgreet 908 root4w VREG8,64 344028 /usr (/dev/rz0g)

              -g [s] 以程序的PGID (process group IDentification)顯示,也可以采用范圍(1-3)或個別(3,5)表示,若沒有特別指定,則顯示全部。
               舉例:以PGID為3顯示
              # lsof -g 3
              COMMAND PID PGID USER FD TYPE DEVICE SIZE/OFF NODE NAME
              kloadsrv 33 root cwd VDIR8,0 2560 2 /
              kloadsrv 33 root txt VREG8,0 221184 16041 /sbin/kloadsrv
              kloadsrv 33 root0r VCHR0,0 0t0 9608 /dev/console
              kloadsrv 33 root1w VCHR0,0 0t0 9608 /dev/console
              kloadsrv 33 root2w VCHR0,0 0t0 9608 /dev/console

              -i [i] 用以監聽有關的任何符合的位址。若沒有相關位置被指定,則監聽全部。
              語法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
              46 --> IPv4 or IPv6
              protocol --> TCP or UDP
              hostname --> Internet host name
              hostaddr --> IPv4位置
               service --> /etc/service中的 service name (可以不只一個)
              port --> 埠號 (可以不只一個)

              # lsof -i tcp@xp001
              
              COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
              telnetd 26862 root0u inet 0x0c349000 0t0 TCP xpp3:telnet->xp001:3807 (ESTABLISHED)
              telnetd 26862 root1u inet 0x0c349000 0t0 TCP xpp3:telnet->xp001:3807 (ESTABLISHED)
              telnetd 26862 root2u inet 0x0c349000 0t0 TCP xpp3:telnet->xp001:3807 (ESTABLISHED)
              telnetd 26986 root0u inet 0x1ab27100 0t0 TCP xpp3:telnet->xp001:3988 (ESTABLISHED)
              telnetd 26986 root1u inet 0x1ab27100 0t0 TCP xpp3:telnet->xp001:3988 (ESTABLISHED)
              telnetd 26986 root2u inet 0x1ab27100 0t0 TCP xpp3:telnet->xp001:3988 (ESTABLISHED)

              -l此參數禁止將user ID轉換為登入名稱。(預設顯示登入名稱)

              # lsof -l|more
              COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
              kernel0 0 cwd VDIR8,02560 2 /
              init 1 0 cwd VDIR8,02560 2 /
              init 1 0 txt VREG8,0 286720 16015 / (/dev/rz0a)
              kloadsrv 3 0 cwd VDIR8,02560 2 /
              kloadsrv 3 0 txt VREG8,0 221184 16041 /sbin/kloadsrv
              kloadsrv 3 0 0r VCHR0,0 0t0 9608 /dev/console
              kloadsrv 3 0 1w VCHR0,0 0t0 9608 /dev/console
              kloadsrv 3 0 2w VCHR0,0 0t0 9608 /dev/console

              +|-L [l] +或-表示正在打開或取消顯示文件連結數. 若只有單純的+L,后面沒有任何數字,則表示顯示全部。若其后有加上數字,只有文

            件連結數少于該數字的會被列出。

              -n不將IP位址轉換成hostname,預設是不加上-n參數。
              舉例: lsof -i tcp@xp001 -n
              (您可以和上兩張圖比較一下,原先的hostname便回ip位置了)
              # lsof -i tcp@xp001 -n
              COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
              telnetd 26862 root0u inet 0x0c349000 0t0 TCP 10.65.69.147:telnet->10.65.69.131:3807 (ESTABLISHED)
              telnetd 26862 root1u inet 0x0c349000 0t0 TCP 10.65.69.147:telnet->10.65.69.131:3807 (ESTABLISHED)
              telnetd 26862 root2u inet 0x0c349000 0t0 TCP 10.65.69.147:telnet->10.65.69.131:3807 (ESTABLISHED)
              telnetd 26986 root0u inet 0x1ab27100 0t0 TCP 10.65.69.147:telnet->10.65.69.131:3988 (ESTABLISHED)
              telnetd 26986 root1u inet 0x1ab27100 0t0 TCP 10.65.69.147:telnet->10.65.69.131:3988 (ESTABLISHED)
              telnetd 26986 root2u inet 0x1ab27100 0t0 TCP 10.65.69.147:telnet->10.65.69.131:3988 (ESTABLISHED)
              # lsof -i tcp@xp001
              COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
              telnetd 26862 root0u inet 0x0c349000 0t0 TCP xpp3:telnet->xp001:3807 (ESTABLISHED)
              telnetd 26862 root1u inet 0x0c349000 0t0 TCP xpp3:telnet->xp001:3807 (ESTABLISHED)
              telnetd 26862 root2u inet 0x0c349000 0t0 TCP xpp3:telnet->xp001:3807 (ESTABLISHED)
              telnetd 26986 root0u inet 0x1ab27100 0t0 TCP xpp3:telnet->xp001:3988 (ESTABLISHED)
              telnetd 26986 root1u inet 0x1ab27100 0t0 TCP xpp3:telnet->xp001:3988 (ESTABLISHED)
              telnetd 26986 root2u inet 0x1ab27100 0t0 TCP xpp3:telnet->xp001:3988 (ESTABLISHED)

              -s列出文件的大小,若該文件沒有大小,則留下空白。
              
              # lsof -s
              COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
              kernel0 root cwd VDIR8,0 2560 2 /
              init 1 root cwd VDIR8,0 2560 2 /
              init 1 root txt VREG8,0 286720 16015 / (/dev/rz0a)
              kloadsrv 3 root cwd VDIR8,0 2560 2 /
              kloadsrv 3 root txt VREG8,0 221184 16041 /sbin/kloadsrv
              kloadsrv 3 root0r VCHR0,09608 /dev/console
              kloadsrv 3 root1w VCHR0,09608 /dev/console
              kloadsrv 3 root2w VCHR0,09608 /dev/console

              -u s 以login name(登入名稱)或UID,列出所正在打開文件。
              
              # lsof -u tongxl
              COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
              csh 26939 tongxl cwd VDIR8,6 1024 243236 /usr -- tongxl
              csh 26939 tongxl txt VREG8,6 253952 12856 /usr (/dev/rz0g)
              csh 26939 tongxl txt VREG8,0 139264 16016 /sbin/loader
              csh 26939 tongxl txt VREG8,0 1663104 38402 /shlib/libc.so
              csh 26939 tongxl0r VCHR1,0 0t0 9612 /dev/tty
              csh 26939 tongxl 15u VCHR6,20t328 9618 /dev/pts/2
              csh 26939 tongxl 16u VCHR6,20t328 9618 /dev/pts/2
              csh 26939 tongxl 17u VCHR6,20t328 9618 /dev/pts/2
              csh 26939 tongxl 18u VCHR6,20t328 9618 /dev/pts/2
              csh 26939 tongxl 19u VCHR6,20t328 9618 /dev/pts/2
              csh 26990 tongxl cwd VDIR8,6 1024 243236 /usr -- tongxl
              csh 26990 tongxl txt VREG8,6 253952 12856 /usr (/dev/rz0g)
              csh 26990 tongxl txt VREG8,0 139264 16016 /sbin/loader
              csh 26990 tongxl txt VREG8,0 1663104 38402 /shlib/libc.so
              csh 26990 tongxl0r VCHR1,0 0t0 9612 /dev/tty
              csh 26990 tongxl 15u VCHR6,1 0t147797 9616 /dev/pts/1
              csh 26990 tongxl 16u VCHR6,1 0t147797 9616 /dev/pts/1
              csh 26990 tongxl 17u VCHR6,1 0t147797 9616 /dev/pts/1
              csh 26990 tongxl 18u VCHR6,1 0t147797 9616 /dev/pts/1
              csh 26990 tongxl 19u VCHR6,1 0t147797 9616 /dev/pts/1
            ----------------------------------------------------------------
            http://www.cublog.cn/u/19782/showart_218982.html
            色偷偷88888欧美精品久久久| 日本精品久久久久中文字幕8| 色综合久久精品中文字幕首页| 久久精品人人槡人妻人人玩AV| 日本人妻丰满熟妇久久久久久| 亚洲va国产va天堂va久久| 亚洲AV无码1区2区久久| 精品久久久久香蕉网| 色综合合久久天天给综看| 久久久国产精华液| 久久国产精品无码一区二区三区| 精品无码久久久久久国产| 伊人久久大香线蕉综合影院首页| 国产精品久久久久久吹潮| 久久精品国产99国产精品| 亚洲级αV无码毛片久久精品| 久久国产乱子精品免费女| 久久精品无码av| 久久精品亚洲日本波多野结衣| 武侠古典久久婷婷狼人伊人| 久久亚洲精品无码AV红樱桃| 色婷婷综合久久久久中文字幕| 久久久久亚洲av无码专区喷水| 久久亚洲AV永久无码精品| 久久久久久久人妻无码中文字幕爆 | 中文字幕热久久久久久久| 色偷偷888欧美精品久久久| 久久夜色精品国产网站| 无码人妻久久一区二区三区蜜桃| 精品久久久无码中文字幕| 99久久精品日本一区二区免费| 囯产精品久久久久久久久蜜桃| 三级片免费观看久久| 国产精品欧美久久久久天天影视 | 狠狠色丁香久久综合五月| 99蜜桃臀久久久欧美精品网站| 久久精品亚洲乱码伦伦中文| 久久精品国产半推半就| 色偷偷偷久久伊人大杳蕉| 久久久久人妻一区精品色| 少妇内射兰兰久久|