隨筆 - 0, 文章 - 264, 評論 - 170, 引用 - 0

          導航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          留言簿(6)

          隨筆分類

          文章分類

          文章檔案

          AI

          android+移動開發(fā)

          apache等開源類包,工具相關

          cdn

          concurrent

          C語言

          git、svn等工具使用

          groovy、grails

          Hadoop、Storm、Spark大數(shù)據(jù)相關

          hibernate、JPA等持久化技術

          html,dom,js,css、ext、mui等前端、移動前端相關

          HTTP、HTTPS、TCP、UDP等協(xié)議相關

          IM、openfire

          Java基礎

          java性能優(yōu)化

          jquery

          linux相關

          lucene、solr等搜索技術相關

          maven gradle ant Jenkins自動化構建與持續(xù)集成

          memcache

          mongodb

          nginx、squid、haproxy、varnish

          OLAP

          python、shell、perl、php

          redis

          rmi相關

          spring

          struts、webwork

          tcp/ip

          tomcat,jsp,servlet相關

          velocity等實用工具相關

          業(yè)務相關

          互聯(lián)網(wǎng)安全、過濾、網(wǎng)絡

          修煉

          其他

          區(qū)塊鏈

          壓力、性能測試相關

          地圖相關

          基礎

          多線程

          開發(fā)工具相關

          數(shù)據(jù)庫

          架構

          移動互聯(lián)網(wǎng)

          設計模式

          搜索

          •  

          最新評論

          java.net.SocketException: Too many open files


            tomcat與apache整合的時候,在tomcat/conf/server.xml中配置ajp最大連接參數(shù)maxThreads為1024。然后重啟服務器,當線程數(shù)達到1024峰值的時候,報java.net.SocketException: Too many open files錯誤。
           

            以下為網(wǎng)上摘抄的解決方案與解惑:

            在Unix/Linux系統(tǒng)中,無論是socket還是file訪問,在后臺為該訪問程序分配了一個文件描述符(descriptor),該文件描 述符為應用程序與基礎操作系統(tǒng)之間的交互提供了通用接口。Unix/Linux系統(tǒng)對每個進程能打開文件描述符有最大限制,一般默認是1024。如果在操 作socket和file的時候忘記關閉,當超過系統(tǒng)默認的最大限制,則出現(xiàn)java.net.SocketException: Too many open files。

           
          查看系統(tǒng)默認文件描述符的最大限制數(shù)
          #ulimit 
          -a
          core file size          (blocks, 
          -c) 0
          data seg size           (kbytes, 
          -d) unlimited
          file size               (blocks, 
          -f) unlimited
          pending signals                 (
          -i) 1024
          max locked memory       (kbytes, 
          -l) 32
          max memory size         (kbytes, 
          -m) unlimited
          open files                      (
          -n) 1024
          pipe size            (
          512 bytes, -p) 8
          POSIX message queues     (bytes, 
          -q) 819200
          stack size              (kbytes, 
          -s) 10240
          cpu time               (seconds, 
          -t) unlimited
          max user processes              (
          -u) 32764
          virtual memory          (kbytes, 
          -v) unlimited
          file locks                      (
          -x) unlimited

          查看某一進程打開的文件描述符
          #lsof 
          -p 進程ID
          java    
          12451 root    1w   REG    8,2     6130    2297363 /opt/log.txt
          java    
          12451 root   43u  sock    0,5             6741803 can't identify protocol


            針對這個問題,解決辦法如下:

          ulimit -2048 增加文件描述符最大數(shù)


            就我目前遇到的問題,的確是因為socket打開連接太多了。

            當然,網(wǎng)上其他人說的,諸如文件流沒有關閉,也可能會導致這個問題。如果是這種情況,請檢查程序,把不必要的socket或file操作關閉掉即可解決。


          posted on 2010-09-09 10:12 小一敗涂地 閱讀(4739) 評論(0)  編輯  收藏 所屬分類: tomcat、apache、jboss等服務器相關

          主站蜘蛛池模板: 高邑县| 澄江县| 麻城市| 新昌县| 边坝县| 江川县| 上饶市| 安义县| 阜新| 咸宁市| 怀安县| 旌德县| 定兴县| 江油市| 普兰店市| 巴林右旗| 即墨市| 枣阳市| 城口县| 平远县| 桂林市| 昌宁县| 乐昌市| 金山区| 屏东县| 汕尾市| 荆门市| 阳泉市| 屯门区| 平潭县| 芒康县| 驻马店市| 准格尔旗| 邵阳市| 云林县| 抚松县| 葵青区| 乳源| 启东市| 吴川市| 县级市|