当前位置:  技术问答>linux和unix

高分求救!Linux下网络服务器程序问题(急急急……)

    来源: 互联网  发布时间:2016-07-02

    本文导语:  我要开发一个C/S架构的程序,客户端和服务器端都是Linux系统(Fedora Core 3),通过TCP通信。基本思想如下: client周期性地以特定格式向server端发送TCP消息(周期一般为2分钟),server端收到client发来的消息后进行解析, 将解析...


我要开发一个C/S架构的程序,客户端和服务器端都是Linux系统(Fedora Core 3),通过TCP通信。基本思想如下:

client周期性地以特定格式向server端发送TCP消息(周期一般为2分钟),server端收到client发来的消息后进行解析,
将解析出来的参数写入数据库中,同时要发送一个回应消息给客户端。

每个服务器端要求支持不少于3000个客户端,即能够同时准确接收处理3000个客户端的连接请求和消息处理。

开发之前查阅了相关资料,据说linux下的select机制最大只能支持1024个fd,因此我在服务器侧采用了Linux的epoll机制。
服务器端的服务程序分为两个模块,
一个为commshell模块:负责接受客户端的TCP连接请求,接收客户端的TCP消息,并将接收到的消息转发给SM模块。同时,
                      此模块还要接收SM模块发送来的消息,并转发给对应的客户端,实质上就是一个通信转发模块。

另一个为SM模块:负责接收commshell模块发送来的 客户端的信息,并进行解析,写入数据库,同时发送回应消息给commshell。

现在功能都已经测试完成没有问题,但是我模拟了多个客户端发现服务器端只能支持几十个客户端。

不知道这是什么原因造成的呢?是由于多线程问题吗?还是我的epoll机制使用不正确呢?

请高手帮忙,分不够可以再加,多谢!!!

可能描述不太清楚,需要更多细节的尽管留言

|
上面说了。用ulimit查看一下你的进程栈大小是多少,文件描述符大小是多少,是否满足你的程序需要,如果没有改大他。

然后流程大致是:

设置监控链接的描述符
while(1){
epoll_wait()
如果发现新链接 
将新链接加入监控集合
发现连接断开
将该链接从监控集合中删除
如果是数据读写
读写数据

}

|
谁说linux下只支持1024个socket的啊?1024是ulimit的限制,你打ulimit -a命令看下,有一行是这样的:
open files  (-n) 1024
自己改大一点就可以了。
比如说用ulimit -n 5000,试试看。

|
一个client和server没有必要建立一个永久链接,udp一样可以再应用层保证他的可靠性。
这点同意吧?因为tcp的下层是ip层,同样是无连接的协议。
无连接方式避免了这一个client和server在2分钟内只干一次活浪费的资源,同时提供了高
可扩展性,几千,甚至上万的客户端一样可以支持。两分钟内几千甚至上万个连接对于一个server来说很一般。
你数据库放在sm,他和commshell是否有阻塞关系?进程不同不代表没有阻塞关系。
我说数据库锁表的事情是想让你把sm模块剥离开,单拿commshell模块去测试,避免由其他问题导致
问题的表现和原因不一致。

|
另外,用ulimit查看一下你的进程栈大小是多少,文件描述符大小是多少,是否满足你的程序需要,如果没有改大他。

|
代码太长了,没看。
2分钟才有一次连接,建议你改成非连接方式的socket。
这样模型比较好维护,性能也不错。
根据你的描述,还有插入数据库的操作,怀疑是这里影响了你的连接数,insert操作要锁表,阻塞了你的其他链接的操作。
你可以去掉数据库相关操作,或者前面用一个任务池缓存一下你的操作避免并发时阻塞。

    
 
 

您可能感兴趣的文章:

  • 求救啊 高分求救 UNIX下关于进程通讯的问题~
  • 求救!!!硬件高请进、、、、、、(十万火急,高分求救。)
  • Linux下无法启动apache 高分求救!在线等待
  • Solaris操作系统在启动的时候出错,急急救命呀 高分求救~~~
  • 高分求救!!!(200)我回多问相同问题来给分的,急急急
  • 高分求救!一个随机数产生的问题
  • 高分求救:有关内嵌汇编!!急!!!
  • 高分求救!jar文件直接双击运行的问题!
  • 大虾们谁有linux desktop 3.0(红旗)的序列号呀,高分求救!500
  • 高分求救:关于gnome/gtk+的问题
  • 有jsp的upload和download 代码么,高分相报! iis7站长之家
  • 高分求救,关于jbuilder编程
  • 高分求救:简单问题
  • 为做需拟主机,单机架设DNS高分求救
  • 求救,帮忙,谢谢,高分相送!
  • linux 高分求救
  • 高分求救:我的solaris8如何进行网络配置?解决立即送分!
  • 高分求救:Linux下如何改变Ramdisk大小!急!!在线等待!!!
  • 高分求救!!基于http协议的代理图片显示不了
  • 高分求救,请教各位大侠!!!
  • 高分:有那位大大虾知道通过Socket得到服务器的类型,等等
  • 高分求如何做一台DHCP服务器
  • 有关 JSP & SERVELET 服务器的两个问题?(100分高分)
  • 如何用redhat6做服务器 连winxp上adsl 详细说明 满意给高分
  • 请有配置Linux下ftp服务器经验的人和我联系,高分重赏 (OICQ:57226475)
  • 部署Linux打印服务器的问题(高分求解)
  • 高分求解,怎样有APPLET打开服务器上的文件,最好有原程序。为什么没人理我??????
  • 【¥¥◎ 高分 ◎¥¥】在linux下安装了qmail做企业级的邮件服务器的问题!我真的很急!!
  • 怎样在客户浏览器读取web服务器上的文件?高分求教
  • 在SCO UNIX环境下如何配置APACHE服务器?高分相赠!!!
  • 高分求助 Solaris10 x86 FTP服务器 外网不能登录
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 谁参加过weblogic的证书考试,是否有经验可供参考?高分高分高高分
  • 哪里有JB6下载啊,高分相送,救命
  • 高分求救!我在uclinux上运行应用程序时出现内存分配错误,不知如何解决,解决者高分!!
  • 哪里去找中文的EJB文章?高分悬赏!
  • 有jsp的upload和download 代码么,高分相报!
  • (高分求助)请问,那里有软件开发的<设计文档>
  • 高分寻求jsp代码(网上调查系统,新闻发布系统)就这点分了
  • 高分求购做饼图、线形图的源吗?
  • 关于linu下的中文输入.(高分:300)
  • 一个简单的问题,高分求助!!!
  • 高分求购jbulider6得注册码,企业版本,个人版本都要
  • Linux远程访问的问题,高分求教:)
  • 请问哪儿有Solaris8的光盘映像文件下载???高分相赠!!!
  • 高分求“Ration Rose”&"JBuilder6.0"&"VisualCafe"
  • VJ的一个问题,高分求助,熟悉VJ得请进!
  • 高分求购:linux和unix命令大全电子文档
  • 急救:关于BLOB数据类型---在线等待,高分相送!
  • 求UNIXWARE7.11的原版下载,高分相赠,在线等待!!!
  • 关于java?高分相送!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3