Linux下Tomcat性能优化--文件句柄数增大
今天在对项目进行性能压力测试时,设置并发量为1000,发现Tomcat控制报错:
java.IOException:打开的文件过多
经搜索,发现是由于Linux默认设置的句柄数为1024,当并发量过大,就不够用了;
原因:
操作系统的中打开文件的最大句柄数受限所致,常常发生在很多个并发用户访问服务器的时候.因为为了执行每个用户的应用服务器都要加载很多文件(new一个socket就需要一个文件句柄),这就会导致打开文件的句柄的缺乏.
解决:
- 尽量把类打成jar包,因为一个jar包只消耗一个文件句柄,如果不打包,一个类就消耗一个文件句柄.
- java的垃圾回收不能关闭网络连接打开的文件句柄,如果没有执行close()(例如:java.net.Socket.close())则文件句柄将一直存在,而不能被关闭.你也可以考虑设置socket的最大打开数来控制这个问题.
- 对操作系统做相关的设置,增加最大文件句柄数量。
采用增大句柄数的方法解决;
- 查看当前设置句柄数:ulimit -a
可以看到,open files 为1024, 而且提示了参数为 -n,下面我们修改该值: ulimit -n 65536
再次查看:ulimit -a
open files 已经变成我们需要的 65536
不过上述修改方法只是当前生效,如果要永久生效,还是要修改配置文件
在/etc/security/limits.conf 添加 (* 代表所有用户有效,你也可以配置具体的用户名)
* soft nofile 65536
* hard nofile 65536
可复制运行此段:
echo -ne "
* soft nofile 65534
* hard nofile 65534
" >>/etc/security/limits.conf
- 修改完退出重新登录就生效了,可重新用ulimit -a查看是否生效。
参考链接:https://jameswxx.iteye.com/blog/2096461
http://www.360doc.com/content/12/1116/13/834950_248186612.shtml
Linux下Tomcat性能优化--文件句柄数增大的更多相关文章
- Oracle在Linux下的性能优化
Oracle数据库内存参数的优化 Ø 与oracle相关的系统内核参数 Ø SGA.PGA参数设置 Oracle下磁盘存储性能优化 Ø 文件系统的选择(ext2 ...
- Linux 下网络性能优化方法简析
概述 对于网络的行为,可以简单划分为 3 条路径:1) 发送路径,2) 转发路径,3) 接收路径,而网络性能的优化则可基于这 3 条路径来考虑.由于数据包的转发一般是具备路由功能的设备所关注,在本文中 ...
- 通过/proc/sys/net/ipv4/优化Linux下网络性能
通过/proc/sys/net/ipv4/优化Linux下网络性能 /proc/sys/net/ipv4/优化1) /proc/sys/net/ipv4/ip_forward该文件表示是否打 ...
- tomcat 性能优化
tomcat 性能优化tomcat默认参数是为开发环境制定,而非适合生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈. tomcat内存优化linux修改TOMCAT_HOME/bin/ ...
- Tomcat性能优化(转载)
出处:微信订阅号GitChat精品课程 — Tomcat性能优化 Tomcat 简单介绍 Sun 公司创建了第一个 Servlet 容器,即 Java Web Server,但 JWS 只是为了演示 ...
- tomcat 性能优化(内存优化 线程优化)
转自:http://blog.sina.com.cn/s/blog_4b5bc01101014s81.html tomcat 性能优化 linux修改TOMCAT_HOME/bin/catalina. ...
- GNU Linux高并发性能优化方案
/*********************************************************** * Author : Samson * Date : 07/14/2015 * ...
- Tomcat 性能优化(连接数、线程、JVM、dir)
Tomcat的server.xml中Context元素的以下参数应该怎么配合适 <Connector port="8080" maxThreads="150&quo ...
- JVM虚拟机详解+Tomcat性能优化
1.JVM(java virtual mechinal) ()JVM有完善的硬件架构,如处理器.堆栈.寄存器当,还具有相应的指令系统. ()JVM的主要工作时解释自己的指令集(即字节码),并映射到本地 ...
随机推荐
- INFORMATICA 开发规范
目 录 Informatica开发规范.... 1 目 录.... 2 1 编写目的.... 4 2 ETL研发责任人界定.... 4 3 ETL ...
- Oracle Merge Into的用法详解
1. MERGE INTO 的用途 MERGE INTO 是Oracle 9i以后才出现的新的功能.那这个功能 是什么呢? 简单来说,就是:“有则更新,无则插入” ...
- win10系统80端口被System (PID=4)占用的解决
今天想用wamp搭建虚拟目录.发现80端口被占用,操作挺麻烦的,所以想要更改. 具体流程如下: 1.“win+R”输入“cmd”,然后输入“netstat -ano | findstr "8 ...
- 组合数计算-java
排列组合是计算应用经常使用的算法,通常使用递归的方式计算,但是由于n!的过于大,暴力计算很不明智.一般使用以下两种方式计算. 一,递归的思想:假设m中取n个数计算排列组合数,表示为comb(m,n). ...
- MySQL监控内容
一.liunx操作系统层面1.整体cpu负载的%user最好不长期超过20%(若%user太高,有极大可能性是索引使用不当)2.整体cpu负载的%iowat最好不长期超过10%(确认I/O子系统是否有 ...
- ES 6 装饰器与 React 高阶组件
关于 Decorator 到底是 ES 6 引入的还是 ES 7 引入的我也不是很明白了,两种说法都有,这种问题懒得纠结了--在用的时候发现这个东西很好用,平常用处可能不大,但是结合 React 就很 ...
- TP,TN,FP,FN
一张图搞定~~~ [转]https://blog.csdn.net/u011956147/article/details/78967145
- Linux环境变量及其设置
简介 环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或多个应用程序将使用到的信息.Linux是一个多用户的操作系统,每个用户登录系统时都会有一个专用的运行环境,通常情况下每个用户的默认的环 ...
- VC++ UDP网络控制台程序
采用的是VC2008,控制台应用程序,使用UDP编写. 1.服务端代码 //UDPServer.cpp #include <WinSock2.h> #include <stdio. ...
- BootStrap启动类
来源 本文整理自 <Tomcat内核设计剖析>.<Tomcat结构解析> 加上自己的理解.源码来自 Tomcat8.5 版本 // org.apache.catalina.st ...