挖井

类库大魔王的挖井日记

挖一口属于自己的井


最近的网络开发工作

之前说过,我把一个项目中的程序线程数都尽量减少了,差不多就是一个程序用一个线程来跑一个event loop来服务所有socket,结果这几天发现似乎性能有点跟不上了。

用于消息中转的程序使用boost.asio来实现了一个tcp server,当有50个client来连时,就很有可能处理不过来,当然这个数目跟机器配置有关系,我的E7200双核CPU外加2GB内存的开发机上,另外跑了一些杂七杂八的程序,就是这种情况,QA那里E7400的CPU,这个数字可以达到200才表现出来跟我的机器上差不多。

然后我增加到3个线程各跑一个event loop,在开发机上50个client测试了几遍没出现过问题,等增加到85个client,就又不行了。接着我又增加到5个线程,85个client也能抗住了。等我增加到100个client,发现加再多线程也没用了,原来CPU已经0% idle了。

不过这个简单的实验至少可以证明,增加线程数和event loop数可以有效增加server的处理能力,当然机器性能要能跟上。

本文地址:

https://minidump.info/blog/2014/11/recent-socket-programming-work/

上一篇

部署Go程序到搜狐云景PaaS

之前注册了搜狐云景PaaS,被送了100元的券,不过当时看了一下发现不支付Go程序,于是就没玩下去了。前几天连续收到几封邮件,说钱要花完了,也没放在心上,觉得反正玩不了,就随它去吧。今天在v2ex上看到有人说可以免费送3个月的使用配额,于是又上后台看了一下,发现它居然使用限制那么少,可以自己在...…

Go 全文阅读
下一篇

遇到的一个网络编程的bug

之前遇到一个bug,一直想不通为什么会出现。具体现象是程序一直尝试去连接一个没打开的端口,过一段时间,可能是几分钟,也可能是几天,那个端口突然被程序自己打开并连上了,然后读到了一些计划外的东西接着断言失败了。我仔细检查过整个程序的代码,有哪些可能会打开一个新的端口,结果没有发现。后来用gdb挂...…

Job 全文阅读