listen函数中的backlog字段

今天在公司无意间又拿redis-benchmark测了一下silly的IO并发性并与redis本身比较了一下。 发现在2000个client同时并发的情况下,性能只是Redis的30%的左右。 直觉上这很不正常,虽然silly所有的数据经过lua层时都需要malloc和memcpy,但最多性能上差个10%~20%就已经很可观了,绝对不可能差70%这么多。 通过不断的调整client的个数,我发现性能并没有明显随着client的数量降低而降低,而是在client个数到达某个值时突然降低的。 比如我自己测的数据是在491个client时,silly的性能与r……

如何做到宽容的收

在《unix编程艺术》提到过,Postel规定过:“宽容的收,谨慎的发”。 当时看到这一段话时,并没有多加思考,以为仅仅是对于网络协议多加检查就好了,并没有深想。 然而经过这两年的实践,我发现其实这条准则可以适用于更多的领域。 对于一个进程来说,他的输入可能是标准输入、管道、网络、配置文件等这些外部输入源。 那么进程所表现出来的宽容就是,不管从外部输入源接收到任何数据,都不应该影响程序的正常执行。即不会由于错误的数据格式或内容,造成崩溃,污然数据等副作用。 实……