标签 Linux 下的文章

协议栈源端口选择性能衰减问题

0x00 问题描述

这是前阵子发现的一个问题,当时我正在写一个简单的http benchmark工具,具体简单到什么程度呢?就是创建一堆socket,去connect目标服务器。

接下来,问题就出现了,我发现1w并发链接和2w并发连接的耗时完全无线性关系,而是呈现一种近指数上升的趋势。例如,1w并发链接建连1w次,耗时不到1s,如果改为2w并发链接,建连2w次,耗时突然变成了10+s。

阅读剩余部分
在线替换Linux系统

由于某些原因,我一直想在自己的一台VPS上使用尽可能新的kernel。

然而,绝大多数供应商提供的镜像均相对保守,像ArchLinux基本不会在他们的可选范围之内。

因此,问题就来了,既然官方不提供比较新的镜像,而你又迫切想要使用,应该怎么办?本文会提供一种方案来实现在线的Linux系统替换,目前只在DO上成功过,如果各位想要尝试,可以在提供网页console的平台上尝试。

注意:目前本人仅在Debian7和CentOS7上实验成功,基本可以确定本文对于CentOS6.5并不适用。以下操作存在未知的风险,请事先备份数据,谨慎处理。

阅读剩余部分
谈谈writev的问题

POSIX提供了一个比write函数更加高级的writev,在很多场景下,它相对于write有一定的优势。

APUE一书将writev的介绍放在了Advanced I/O部分,个人拙见,它和write应该是属于同层次的IO,谈不上Advanced。

最近,我在重写HTTP解析器的时候用到了writev,发现它并不如想象中的方便,甚至相当坑,有必要记录一下,或许对大家有所帮助。

阅读剩余部分