eBPF挂钩TC egress时,被TCP Checksum搞死了

我最近也在尝试用eBPF TC类型程序,挂钩`egress`网络包,修改IP包、TCP包内容,实现路由跟踪的功能。除了eBPF验证器的奇葩问题外,剩下的就是`skb_buff`修改后,被客户端内核丢弃、中间路由丢弃、服务端内核丢弃的各种问题,头发那是一把一把的掉。幸运的是,我找到了这篇文章《Checksum-or-fxxk-up》,特意转来给大家分享。

Continue reading


TCP SOCKET中backlog参数的用途是什么?

tcp ack rto在前年时,业务中遇到好多次因为PHP-FPM的backlog参数引发的性能问题,一直想去详细研究一番,还特意在2013年总结里提到这事《为何PHP5.5.6中fpm backlog Changed default listen() backlog to 65535》,然而,我稍于懒惰,一拖再拖,直至今日,才动脑去想,动笔去写。PHP-FPM的配置中,backlog默认值从128改为65535,又从65535改为511,可能很多人都没有在意,我也是因为遇到过类似错误,才决定去认真理理其中知识点的。

Continue reading


nginx、php-fpm默认配置与性能–TCP socket还是unix domain socket

前几天看到一篇博客《关于流量升高导致TIME_WAIT增加,MySQL连接大量失败的问题》,提到php所在服务器在大并发情况下,频繁创建TCP短连接,而其所在服务器的2MSL时间过长,导致没有端口可用,系统无法创建TCP socket,而大量报错。博主在后面给的解决方案是减少2MSL的时间,尽快清除TIME_WAIT状态的TCP连接,回收端口。同时,文章结尾写了不用长连接的理由,但这真的是最好的解决办法吗?有其他办法可以更好的做法吗?

Continue reading


YSLOW法则中,为什么yahoo推荐用GET代替POST?

蜇伏Yahoo的优化法则里,有这么一条“Use GET for AJAX Requests”,让我们尽量使用GET来代替POST发起AJAX请求,为什么呢? 上上周五,公司前端工程师培训,提到前端优化的一些技巧,当然不能少了yahoo yslow的优化法则。其中有这么一条“Use GET for AJAX Requests”,这些法则从最开始的14条,到现在的35条,一直都时刻关注的。可这么一条的原因我却一点都不清楚。在提问的环节里,我对yahoo WEB前端优化法则推荐AJAX中,使用GET代替POST的原因有疑问,便请教前端工程师。我们的工程师说GET的话,浏览器发送一个包,POST会发两个等等。我对这个解释仍带有疑问,甚至怀疑。

Continue reading