
网络编程
thinkry
持之以恒
展开
-
服务器编程中的日志
今天leader提了一份服务器编程的规范,其中一个是日志问题。一般的,日志级别分为Fatal、Error、Warning、Info、Debug和Trace,输出哪些级别的日志要能动态配置,但Fatal、Error和Info是必须要输出的,而且Debug/Trace日志要能反映程序运行的情况,为在线调试提供足够的信息,这就要求编码时就要考虑可能出错调试的情况:编码时多写点,出bug时就少些烦劳原创 2006-09-27 19:07:00 · 1878 阅读 · 0 评论 -
统一完成端口Iocp和Epoll
在《完成端口Iocp与Epoll的区别》中说了两者的重要区别是Iocp是动作完成后的通知,Epoll是告知动作可以做,类似select。 ENP中如何支持Linux和Windows,统一Iocp和Epoll呢?ENP开始编写的是Epoll部分,增加Iocp部分时发现继续采用Epoll的逻辑设计是行不通的。后来灵光突现,既然Iocp不能采用Epoll的逻辑设计,那么采用Iocp的逻辑设原创 2006-09-27 19:11:00 · 2804 阅读 · 0 评论 -
完成端口Iocp与Epoll的区别
Windows下高并发的高性能服务器一般会采用完成端口IOCP技术,Linux下则会采用Epoll。最近写enp时发现Iocp和Epoll的一个根本区别是Epoll是返回多个socket中有事件发生的socket,类似select,不过性能更高;Iocp则是在动作完成后返回通知(完成端口中的“完成”就是这个意思)。两者都能够把socket和一个4字节Key字段绑定在一起,Epoll中是原创 2006-09-27 19:09:00 · 7977 阅读 · 3 评论 -
高性能动态Web服务器的一些探讨
现在设计高性能Web网站时,一般都把动态和静态分开处理。静态资源(html/image/js/css/swf)一般使用nginx/lighttpd这类Web服务器,把静态资源缓存到内存或用sendfile,CPU和磁盘IO一般不是瓶颈,性能很高,直接用就行,本文不讨论。 至于动态部分,我们一般使用Apache,用C++编写CGI/FastCGI。FastCGI因为比CGI少了fork和初始原创 2010-03-02 13:18:00 · 1523 阅读 · 1 评论