当前位置: 技术问答>linux和unix
问个关于epoll模型的问题
来源: 互联网 发布时间:2017-05-03
本文导语: 本帖最后由 JiangYouJiShiYou 于 2013-11-30 23:31:37 编辑 自己写了个简单的epoll模型,但是用webbench进行压力测试的时候,发现只要webbench的并发数设置成大于1,则压力测试完之后再重新建立一个连接发送数据却收不到回应,...
http://blog.chinaunix.net/uid-311680-id-2439721.html
结果在压力测试的时候还是发生同样的情况。
然后我自己写了一份java代码来压力测试,只要并发数大于1,那么无论测试上面网址的代码还是我自己的epoll模型的代码,结果还是这样,丢失连接,并且压力测试完之后,如果用浏览器或telnet的方式连接,连上去之后,向服务器发送数据,但服务器没有回应,但socket一直没有断,直到下个连接连上去的时候,服务器才给上个连接发送回应。请问为什么呢?
测试我的epoll模型的代码的时候,如果压力测试中的并发线程数为3,那么运行压力测试程序之后,服务器的日志中显示“accept”函数只被运行了两次(有时候会有三次),请问为什么会少掉一次呢?下面贴上我的代码:
压力测试的:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.concurrent.CountDownLatch;
public class Bench {
public static void main(String args[]) {
int count = 3;
final byte[] sendBuf = "haha".getBytes();
final CountDownLatch cdl = new CountDownLatch(count);
for (int i = 0; i