yulihua49 发表于 2013-02-22 11:31

本帖最后由 yulihua49 于 2013-02-22 11:33 编辑

iw1210 发表于 2013-02-22 11:23 static/image/common/back.gif
4、5个退不出来,什么意思?
丢事件了,服务器不响应,有4、5个客户端死等。

iw1210 发表于 2013-02-22 11:39

yulihua49 发表于 2013-02-22 11:31 static/image/common/back.gif
丢事件了,服务器不响应,有4、5个客户端死等。
用队列了么?

yulihua49 发表于 2013-02-22 11:46

本帖最后由 yulihua49 于 2013-02-22 11:59 编辑

iw1210 发表于 2013-02-22 11:39 static/image/common/back.gif
用队列了么?
用了,你看源码:
q_add().....
队列没问题。活都干完了,激活事件后select不响应了。
这是worker里激活select的代码。最后的几个线程,执行完fprintf后没消息了。int evt=conn->events;
      conn->events=0;
      pthread_mutex_lock(&beatLock);
      FD_SET(sock,&rfds);
      if (conn->woff > 0) FD_SET(sock,&wfds);
      FD_SET(sock,&efds);
      pthread_mutex_unlock(&beatLock);
fprintf(stderr,"work %lu:sock=%d,events=%08X\n",pthread_self(),sock,evt);
      if(!pthread_mutex_trylock(&beatLock)) {
                beatc='\n';
                write(beat,&beatc,1);
                pthread_mutex_unlock(&beatLock);
      }
这几个fd的最后遗言:
work 139915560453888:sock=9,events=00000001
work 139915508004608:sock=8,events=00000001
work 139915549964032:sock=10,events=00000001
work 139915570943744:sock=11,events=00000001
work 139915581433600:sock=12,events=00000001
work 139915539474176:sock=13,events=00000001
work 139915528984320:sock=14,events=00000001
就这几个事件丢了,相应的fd没有关闭。服务器没有死。
继续用telnet localhost 9876
还是可以正常工作的。

starwing83 发表于 2013-02-22 11:58

本帖最后由 starwing83 于 2013-02-22 11:59 编辑

回复 126# linux_c_py_php


    有没有示例代码?我来看看。

对了,如果你是coroutine,那么瓶颈再怎么说也应该在lua_resume上面吧 = =在lua_pcall上面是闹哪样= =

yulihua49 发表于 2013-02-22 12:00

本帖最后由 yulihua49 于 2013-02-22 12:07 编辑

starwing83 发表于 2013-02-22 11:58 static/image/common/back.gif
回复 126# linux_c_py_php



13页129楼是调度器。




客户端就用楼主给的那个。
里边的nohup.out就是最后执行结果。

编译后:
nohup ./server &
就可以了。
可以直接用telnet测试单连接。

starwing83 发表于 2013-02-22 12:16

回复 135# yulihua49


    我说的是蛇兄的Lua问题好么= =他调用xmove移动值不成功= =

starwing83 发表于 2013-02-22 12:17

select是会有数量限制的,但是epoll没有。

select还会有那个fd-set的开销,epoll也不会存在开销问题。

yulihua49 发表于 2013-02-22 12:21

本帖最后由 yulihua49 于 2013-02-22 12:26 编辑

starwing83 发表于 2013-02-22 12:17 static/image/common/back.gif
select是会有数量限制的,但是epoll没有。

select还会有那个fd-set的开销,epoll也不会存在开销问题。
现在那个先不管,能干活了再说。
有谁写过select的线程池吗?交流一下如何?

我也是抽风。有人说要用select,可移植。能力和效率先不管。
大家只说到select的能力和效率不行,我现在看不止如此,恐怕流程都走不下来。
文档说select用于同步IO。
现在拿他当异步IO,有点艰难。

iw1210 发表于 2013-02-22 12:43

回复 133# yulihua49

看代码太累,你说说你的设计吧,每个线程的工作是什么?



   

iw1210 发表于 2013-02-22 12:45

回复 137# starwing83

fd-set开销很大么?


   
页: 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18 19 20 21 22 23
查看完整版本: [基于Epoll内置Leader-Follower服务端实现, 已可达50万echo qps(全新支持Lua啦)]