Hello!
2015-04-17 12:22 GMT+08:00 syz:
> 我想请教一下Nginx在传输大文件时是怎么提高单个进程的并发量和吞吐量的呢? 我知道为了提高传输性能用了sendfile零拷贝!
> 我做了一个实验 使用epoll + sendfile + 线程池做为一个简单的文件服务器, 传输的文件比较大几十到几百MB
> 。当所有的线程都处于忙碌的状态时, 如果这时新来一个client服务器就无法处理了。 我想知道nginx在这方面是怎么解决的呢?
>
这里涉及很多技术细节,包括内存缓存区的管理和事件的调度等等。总的原则是
1. 使用常量的较小 working set,已提高 locality.
2. 尽量减少系统调用的次数,
3. 让 CPU 计算和 I/O 操作尽可能的重叠,
4. 避免饥饿问题,提高公平性。
Regards,
-agentzh
P.S. 请尽量不要使用 HTML 格式来编写邮件。