Closed GoogleCodeExporter closed 8 years ago
补充一下:
Caused by: java.net.SocketException: No buffer space available (maximum
connections reached?): connect
at sun.nio.ch.Net.connect(Native Method)
at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:500)
at java.nio.channels.SocketChannel.open(SocketChannel.java:146)
at sun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:78)
... 139 more
[framework] 2011-12-20 19:46:36,789 ERROR -
com.google.code.yanf4j.core.impl.AbstractController -98254438
[http-apr-7270-exec-9] com.google.code.yanf4j.core.impl.AbstractController -
Start server error
Original comment by wszyq...@gmail.com
on 21 Dec 2011 at 3:22
已经达到你系统进程的最大文件句柄数,windows怎么设置我不�
��楚。
linux通过ulimit设置。
Original comment by killme2...@gmail.com
on 21 Dec 2011 at 3:26
补充一下:
系统运行的前几天没有问题,到今天发生异常我停了后台,远程使用我的客户端访问服务器上的memcached,还是能够存取数据的,我怀疑是不是由于client创建后没有关掉,导致后面把资源消耗完导致的。
谢谢这么快回复
Original comment by wszyq...@gmail.com
on 21 Dec 2011 at 3:29
client应该是单例的,只有在应用shutdown的时候才关闭。
Original comment by killme2...@gmail.com
on 21 Dec 2011 at 3:31
我做了一下压力测试
原来在没有使用xmemcached的时候,几百个并发都没有问题,现�
��使用了之后总是报
java.io.IOException: Unable to establish loopback connection这个问题,
是不是使用了nio的原因?
测试过程中,只是对一个接口测试,jdk的内存增长很快,jdk��
�加到1.4G多就开始报不能建立连接了。jrockit内存增加到2G多就
会报不能建立连接。
怎么回事啊
Original comment by wszyq...@gmail.com
on 21 Dec 2011 at 4:20
Original comment by wszyq...@gmail.com
on 21 Dec 2011 at 4:25
这个是测试过程中显示的连接(部分),随着请求的增加急��
�增加,直到最大,然后就挂了!
怎么回事
Original comment by wszyq...@gmail.com
on 21 Dec 2011 at 4:26
系统挂的时候,占用的内存和句柄数,如下图
Original comment by wszyq...@gmail.com
on 21 Dec 2011 at 4:30
上面的截图反映一个问题,当不断的请求后台时,不断建立me
mcached的客户端不断的建立tcp连接,连接都是established(建立��
�的状态,没有释放,客户端再次请求的时候,win系统就会再�
��客户端建立一个新的连接,这样当请求比较多的时候,就会
耗光全部的能建立的连接,然后报异常
Original comment by wszyq...@gmail.com
on 21 Dec 2011 at 4:51
如果本地测试,采用new的方式建立memcached的连接,使用for循��
�建立xmemcached的客户端500个,就会同样的报Unable to establish
loopback connection这个异常
Original comment by wszyq...@gmail.com
on 21 Dec 2011 at 4:58
你这是误用,memcached
client需要复用的,一个应用只要用一个client就够了。
你创建一个client就会创建一些链接占用文件句柄数,当然链��
�不够用。
Original comment by killme2...@gmail.com
on 21 Dec 2011 at 5:12
那好,前面说的new是错误的,那么我在项目里的采用spring管��
�的,那个是单例的吧,是web应用,我模拟客户访问可以吧,�
��是为什么服务器的tcp连接剧增呢?直到挂了。为什么?帮忙
解决一下,我觉得有可能是我的问题,但是找不出来
Original comment by wszyq...@gmail.com
on 21 Dec 2011 at 5:40
memcached
client本身会占用部分文件句柄,但是理论上不会太多。
你的问题是你的文件句柄数已经超过操作系统限制,你可以��
�试增大这个值。windows我不知道怎么设置,你可以自己google下
,linux可以设置ulimit。
Original comment by killme2...@gmail.com
on 21 Dec 2011 at 5:46
可能我没有解释清楚。我再解释一下
1、发现无法建立连接后,我讲JDK关了,重启,xmem能正常使用
。此时说明mem服务端没有问题,win系统没有问题,使用netstat
-na查看刚才的TCP连接也都释放了。
以上表明重启没有问题。
2、重启后,模拟用户请求,服务器的tcp连接不断的增加,why�
��这说明client随着后面的客户请求不断的增加,新的client建立
了。怎么回事?
我问的就是这个问题,是不是需要在每次使用client之后都要使用client.shutdown(),关闭?
Original comment by wszyq...@gmail.com
on 21 Dec 2011 at 5:52
xmc只会占用固定的文件tcp链接,部分loopback链接是nio内部机制
建立的,每一个selector都会有一对loopback链接。
不要每次使用都调用client.shutdown(),只在应用关闭后调用。简
单地就是交给spring管理生命周期。
我说了,你的问题就是因为加上xmc后,你的文件句柄数恰好��
�到上限了,除了增大,没有好的办法。
Original comment by killme2...@gmail.com
on 21 Dec 2011 at 6:03
加上xmc后没有达到上限,系统还能使用,同时xmc还是能从mem��
�取数据,加数据,
Original comment by wszyq...@gmail.com
on 21 Dec 2011 at 6:09
你说的压测会报错,那就是问题所在。正常使用可能不一定��
�出问题。在高峰的时候就可能暴露了。
Original comment by killme2...@gmail.com
on 21 Dec 2011 at 6:14
那好
谢谢了。
我考虑其他办法吧
Original comment by wszyq...@gmail.com
on 21 Dec 2011 at 6:16
我下午把原来xmemcached的客户端改成了spymemcached,for循环20万��
�,两个线程,在xp系统下测试,使用netstat
-an命令查看没有任何tcp链接剧增的情况。没有出现早晨链接��
�尽的情况,我觉的是xmemcached的client销毁的问题,可能是我配
置的问题,我是按照官方配置的,但是这个问题值得注意,��
�望作者重视,仅是建议
Original comment by wszyq...@gmail.com
on 21 Dec 2011 at 9:16
嗯,xmc有个selector池,在windows下确实会占用loopback链接。我已
经解释过了。如果你使用xmc的连接池,那也会比spy更多链接��
�通常来说我不推荐xmc使用连接池。
其他我没有更多解释了,这个问题的解决办法就是增大文件��
�柄数。
Original comment by killme2...@gmail.com
on 21 Dec 2011 at 10:06
win
2003可以在注册表中查找USERProcessHandleQuota,范围设置在200~18000
之间。
TO killme2...:能否完善下连接池,thanks。
Original comment by Howard.X...@gmail.com
on 7 Feb 2012 at 6:26
Original issue reported on code.google.com by
wszyq...@gmail.com
on 21 Dec 2011 at 3:20