发布在Tomcat+linux服务器上的项目经常报”java.net.SocketException: Too many open files"的错误,根据错误分析如下 :
Linux 系统默认的open files的设置是1024
通过 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) 16127
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
访问应用时,操作系统new Socket去连接文件,当连接数超过系统的设置时候,这时候就报了这类错误。
解决方法 :
1、设置Linux的允许的open files的个数,设置方法 ulimit -n 连接数
2、将classes目录下的class文件打包成jar的方式,减少new Socket的数量。
ulimit -n 4096
把打开文件数的上限设为了4096,这下好了,项目又稳定了,嘻嘻,正为这事高兴了,
没想到过两天后又重新出这个错误了,郁闷,两个小时报一次,报之后就挂掉了,什么原因了,
在重新用ulimit -a查看,这下傻了,发现open
files
(-n) 1024 又变回了1024了,想到原因了,
报这个错误就在我那次登陆更新之后又报的,原来ulimit -n 4096 命令只能临时的改变open
files
的值,当
重新登陆后又会恢复,所以需要永久设置open
files
的值才行啊,至于永久修改的方法大家可以google一下啊,
呵呵,这次永久修改后程序就再没那个问题了,一直稳定运行。
另外遇到这个问题这后还需要检查我们的程序对于操作io的流是否在操作完之后关闭,这才是从最更本上的解决。
以上就是我解决这个问题的过程,希望对大家有些帮助。
用ulimit -n 修改open files 总是不能保持。所以用下面一个简单的办法更好些。
修改/etc/security/limits.conf 添加如下一行:
* - nofile 1006154
修改/etc/pam.d/login添加如下一行
session required /lib/security/pam_limits.so
分享到:
相关推荐
在IT领域,尤其是系统管理和软件开发过程中,经常遇到通过Shell无法远程连接到Linux虚拟机的问题。这不仅影响工作效率,还可能导致项目延期。本文将深入探讨这一问题的原因及解决方案,帮助读者快速定位并解决连接...
这个错误可能出现在尝试运行由较新版本的GCC编译的二进制文件时,或者在没有正确更新GLIBC和libstdc++的旧Linux发行版上。 解决这个问题,我们可以按照以下步骤进行: 1. **检查当前版本**:首先,确认当前系统中`...
jave amr转mp3 64位 liunx&windows 有一个问题,win10上会失败,报错如下: it.sauronsoftware.jave.EncoderException: java.io.IOException: Cannot run program "C:\Users\...在最新的liunx contOS7上测试没有问题
jave-1.0.3.jar解决已知如下问题: 1、it.sauronsoftware.jave.EncoderException: Metadata 2、it.sauronsoftware.jave.EncoderException: video:0kB audio:1301kB subtitle:0kB other streams:0kB global headers:0...
liunx opencv java320.so System.getProperty("java.library.path") 获取到library路径然后把so文件放到该目录下
"150个常用的Linux命令汇总" Linux 命令是 Linux 操作系统的核心组件之一,它们提供了对系统的控制和管理能力。以下是 150 个常用的 Linux 命令汇总,涵盖了文件和目录操作、查看文件及内容处理、文件压缩及解压缩...
2. **Java Virtual Machine (JVM)**:JVM是Java平台的核心组成部分,它负责将编译后的Java字节码转换为特定操作系统下的机器指令,实现了跨平台的“一次编写,到处运行”特性。 3. **Java Class Library**:这个...
java jdk8 双系统安装包 Windows & liunx liunx 配置 修改etc/profile export JAVA_HOME=文件夹路径 export JRE_HOME=文件夹路径/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME...
在Linux环境下,为了在Java应用程序中使用GDAL,通常需要通过SWIG(Simplified Wrapper and Interface Generator)工具来生成Java绑定,这通常涉及到一系列复杂的编译和配置步骤。然而,你提到的标题和描述表明,...
4. **修改内核参数**:在编辑模式下,找到以`kernel`或`linux16`(对于较旧的系统)开头的行,然后在行末添加`init=/bin/bash`。这将使系统在单用户模式下启动,也就是救援模式。 5. **启动系统**:按`Ctrl+X`或者`...
《东方通Linux 7.0.4.1在麒麟系统上的安装详解》 东方通,作为国内知名的基础软件供应商,其产品广泛应用于企业级服务。本文将详细介绍如何在麒麟操作系统上安装东方通Linux版本7.0.4.1。这个安装包"Install_TW7.0....
修改linux进程可打开的文件数的限制open files linux中一切都是文件 默认linux一个进程可打开1024个文件 大并发需要达到5万个文件描述符FD,你必须修改该参数值才行
标题中的问题 "The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path" 指的是在启动Apache Tomcat时遇到的一个错误,...
一步步安装nginx搭建流媒体服务器的所有软件打包; nginx-1.8.0.tar.gz :应用服务器主程序 ...zlib-1.2.3.tar.gz :liunx下的JFFS文件系统制作工具 yamdi-1.9.tar.gz :为flv文件添加关键帧,才能实现拖动播放
系统环境:CentOS Linux release 7.6.1810 (Core) 起因:npm构建时报错 npm ERR! Error while executing: npm ERR! /usr/bin/git ls-remote -h -t ...npm ERR! npm ERR!... Connection timed out npm
在Linux环境下配置Java开发环境是每个Java开发者必须掌握的基础技能之一。以下是一个详细的步骤指南,帮助你理解如何在Linux系统中安装和配置Java Development Kit (JDK)。 首先,你需要从官方源获取JDK。在本例中...
Java连接SAP主要涉及到的是Java与SAP系统之间的交互,这通常通过SAP提供的Java Connector (JCo)来实现。SAP Java Connector (JCo) 是一个接口库,允许Java应用程序与SAP R/3系统进行通信。在这个过程中,我们需要...
本主题将深入探讨在Linux环境下安装与配置Java JDK 1.8和Apache ZooKeeper的过程,这两个组件对于运行和管理Java应用程序,尤其是大数据框架如Hadoop和Spark,至关重要。 首先,我们关注的是JDK(Java Development ...
嵌入式Liunx应用程序开发笔记-代码.zip嵌入式Liunx应用程序开发笔记-代码.zip嵌入式Liunx应用程序开发笔记-代码.zip嵌入式Liunx应用程序开发笔记-代码.zip嵌入式Liunx应用程序开发笔记-代码.zip嵌入式Liunx应用程序...
fatal error:boostdesc_bgm,i:没有那个文件或目录 ...解决方法,直接解压后放到放在 opencv_contrib/modules/xfeatures2d/src/ 路径下即可。注意*** 删除解压文件下的的“vgg_generated_120 - 副本”文件