分享

服务端访问用户过多,导致程序卡死,应如何优化

 quasiceo 2013-01-07
用indy tcp+mydac写的服务端程序,mysql数据库,访问人数达到2K左右时就会卡死,一直没有找到解决方法,请高手不吝赐教,数据库配置优化,程序代码优化等等

用Indy肯定是不行的,这个问题我研究了很长的时间:

1.采用IOCP或者线程池技术
2.后台线程处理处理界面交互,多用SendMessage和SendThreadMessage来处理;

一种方法是修改创建线程时的堆栈参数, 默认是1m,那么最多开2k线程啥事不干光是堆栈保留就可以把2g用户地址空间耗光,最小堆栈可以设置为64k,这样就可以有上万的线程了。
还有一种就是啥也不改,多买几台机器每台机器同时多开几个程序在多个端口服务,应该也不错。
用iocp来处理也确实不错,不过明显开发难度要上一个档次,iocp是绑死在nt上的技术,可移植性远不如用indy好。
--------

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多