在我的Macbook Pro 15'(16千兆RAM,4个物理内核)上从Mac iOS(El Capitan)上的shell执行gatling(加载测试工具)时,我的错误是"打开的文件过多".
我花了几天时间来解决这个问题,没有任何成功:
我在/Library/LaunchDaemons/limit.maxfiles.plist中创建了一个文件,其中包含从Web复制的XML文件内容,没有结果.
sudo ulimit -n 15000不起作用.
我使用以下内容创建了一个文件/etc/sysctl.conf
kern.maxfiles = 20480
kern.maxfilesperproc = 20480
我认为"/ Library/LaunchDaemons /"中的xml文件似乎有一些效果,因为当我更改maxfiles的值时,命令"sudo launchctl limit"向我显示我在XML文件中输入的值,以及使用某个值调用"ulimit -n",它接受小于该值的每个值,但是当我调用"ulimit -n"时,结果是每次都是相同的"4096".
我在Java中看到,限制是10240,所以我尝试了VM选项(-XX:-MaxFDLimit)而没有任何影响.
奇怪的是,当我从Intellij(IDE)执行Gatling时,我可以直到10 200个套接字.同样的事情,即使在所有组合中执行所有命令(ulimit,sysctl,launchctl,...)之后,也会产生不同的效果.
最好的祝福
我正在编写一个基于Netty的本地HTTP服务器.当我进行压力测试时,我限制在400个请求/秒.
要优化我的服务器,我已经写了基于Netty的一个简单的服务器,只是发送的"Hello World"的客户端,我发起了一个压力测试与加特林2,和与此服务器,我已经得到了同样的结果(限制为400 req/s).
我使用Yourkit进行性能分析,没有额外的GC活动,我的开放/关闭套接字限制为480个套接字/秒.
我使用MacBook Pro,4核,16 GB RAM,我使用Netty 4.1.
我很惊讶地限制在400 req/s,因为其他基准测试的结果显示> 20 000 req/s或更多.我知道有硬件限制,但400 req/s,在4核+ 16 GB Ram上发送"hello World"非常低.
提前感谢您的帮助,我不知道从哪里开始优化我的Netty代码.
是否有任何优化Netty的具体指导方针?
这是我的hello world服务器的源代码,后跟我的连接的处理程序:
public class TestServer {
private static final Logger logger = LogManager.getLogger("TestServer");
int nbSockets = 0 ;
EventLoopGroup pool = new NioEventLoopGroup() ;
private void init(int port) {
EventLoopGroup bossGroup = new NioEventLoopGroup(100) ;
try {
long t1 = System.currentTimeMillis() ;
ServerBootstrap b = new ServerBootstrap().group(bossGroup);
b.channel(NioServerSocketChannel.class)
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch) throws Exception …Run Code Online (Sandbox Code Playgroud)