发表于 2011 年 01 月 06 日 由 admin
Tomcat Too Many Open Files ;Too many open files tomcat 60报“too many open files Too many open files 问题的解决
linux 故障解决,tomcat 故障处理,too many open files 故障处理这个问题是第一次在Linux环境下碰到,把解决的方法记录下来。
服务器配置:两个双核CPU 20G,4G内存
*** 作系统:CentOS,内核2618
应用1、搜索服务器,负责全站的搜索和提供内容相关性接口
应用服务器:Tomcat6016+Apache228,其中两个Tomcat实例,一个对外提供服务,一个对内管理索引(创建、删除、检索等)
Web方案:Solr13(With Solr Client For Java)、Java Servlet(Web Service 接口)
应用2、类似于百度知道的一个应用
应用服务器:与搜索服务器共享Apache228
Web方案:Php+Mysql
问题症状:搜索服务停止,应用2响应超时,牵连全站的搜索接口调用内容的输出,查看Catalina日志,大量的如下信息:
<!--[if !supportLineBreakNewLine]-->
Java代码
orgapachejkcommonChannelSocket acceptConnections
WARNING: Exception executing accept
javanetSocketException: Too many open files
at javanetPlainSocketImplsocketAccept(Native Method)
at javanetPlainSocketImplaccept(Unknown Source)
at javanetServerSocketimplAccept(Unknown Source)
at javanetServerSocketaccept(Unknown Source)
at orgapachejkcommonChannelSocketaccept(ChannelSocketjava:295)
at orgapachejkcommonChannelSocketacceptConnections(ChannelSocketjava:641)
at orgapachejkcommonSocketAcceptorrunIt(ChannelSocketjava:852)
at orgapachetomcatutilthreadsThreadPool$ControlRunnablerun(ThreadPooljava:684)
at javalangThreadrun(Unknown Source)
orgapachejkcommonChannelSocket acceptConnections
WARNING: Exception executing accept
javanetSocketException: Too many open files
at javanetPlainSocketImplsocketAccept(Native Method)
at javanetPlainSocketImplaccept(Unknown Source)
at javanetServerSocketimplAccept(Unknown Source)
at javanetServerSocketaccept(Unknown Source)
at orgapachejkcommonChannelSocketaccept(ChannelSocketjava:295)
at orgapachejkcommonChannelSocketacceptConnections(ChannelSocketjava:641)
at orgapachejkcommonSocketAcceptorrunIt(ChannelSocketjava:852)
at orgapachetomcatutilthreadsThreadPool$ControlRunnablerun(ThreadPooljava:684)
at javalangThreadrun(Unknown Source)
<!--[endif]-->事件的主题:linux系统出现Too many open files 错误,这是因为文件描述符大小不够,或者有不正常的网络连接(Socket也是一种特殊的文件)、文件IO没有关闭并释放出文件描述符(文件句柄,File Operator)。
使用如下命令查看系统对允许打开最大文件描述符的配置:
ulimit -u 查看open files设置
ulimit -a 查看所有设置
ulimit -u 65535(新的open files 值)修改设置
ulimit -n 65536 设置用户可以同时打开的最大文件数(max open files)
如果本参数设置过小,对于并发访问量大的网站,可能会出现too many open files的错误
使用lsof -p pid [>最近搭建一个全文检索平台。最初考虑只采用lucene,然后自己写索引构建程序、检索框架等,类似osc @红薯 的方案,以前也做过比较熟悉。但有两个问题,1比较复杂,工作量和维护量都比较大。2 检索会有一定的延时。
看了看Solr决定采用solr,可以节省很大一部分开发时间。但有几个问题想请教下 osc 里的全文检索高手,希望大家不吝赐教:
1第一种方案,solr配置数据库,自动处理建索引。这样会不会延时很大,无法做到实时检索?
2第二种方案,通过solrj客户端在应用端 处理建索引问题,比如在发布一篇文章的时候,通过>我们下载的Solr包后,进入Solr所在的目录,我们可以看到以下几个目录:build、client、dist、example、lib、site、src。下面分别对其进行介绍。
1) build:该目录是在ant build过程中生成的,其中包含了未被打包成jar或是war的class文件以及一些文档文件。
2) client:该目录包含了特定语言的Solr客户端API,使得使用其他语言的用户能通过>solr的三个配置文件:
1、solrconfigxml
只配置一次就够了
2、data-configxml
配置数据库与solr搜索的映射关系,需要按实际情况处理
3、schemaxml
配置solr搜索字段
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)