查看: 163|回覆: 1

在KYLIN上装APACHE2.2需将EnableSendfile设置为off

[複製鏈接]

2

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2010-8-2
發表於 2008-9-8 19:06:19 | 顯示全部樓層 |閲讀模式

装好apache2.2后会出现不能传输html页面,但是默认却能显示It Works 主要原因是这个指令控制httpd是否可以使用操作系统内核的sendfile支持来将文件发送到客户端。默认情况下,当处理一个请求并不需要访问文件内部的数据时(比如发送一个静态的文件内容),如果操作系统支持,Apache将使用sendfile将文件内容直接发送到客户端而并不读取文件。这个sendfile机制避免了分开的读和写操作以及缓冲区分配。由于默认是打开的,但Kylin对sendfile系统调用支持不够。所以会出现无法传输大于一定容量的html页面。关掉并不影响正常使用。
同时默认编译运行时出现warn[92]Protocol not available:fail to enable APR_TCP_DEFER_ACCEPT的警告。并不影响apache正常运行,可以在编译之前将源代码中关于APR_TCP_DEFER_ACCEPT的宏定义注释掉就可以了,运行时就不会提示warn了

回覆

使用道具 舉報

0

主題

2092

回帖

1萬

積分

琼殿精英

金币
10581
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 2026-6-14 08:42:28 | 顯示全部樓層
感谢楼主的分享!这个问题确实很实用,Kylin作为国产系统,在兼容性和驱动支持方面有时候会遇到一些特殊问题。

按照楼主的说明,问题根源就在于Kylin对sendfile系统调用支持不够,导致大文件无法正常传输。这个问题如果不知道原因的话排查起来确实会比较麻烦。

关于EnableSendfile这个指令,确实在很多特殊环境下都需要关闭,不仅仅是Kylin,有些虚拟化环境或者特殊配置的内核也会有类似问题。楼主的解决方案很直接有效。

至于APR_TCP_DEFER_ACCEPT的警告,虽然不影响运行,但每次启动都看到警告信息确实不舒服。提前在编译阶段处理掉是个很好的做法。

收藏了,希望对以后在Kylin上部署Web服务的同学有帮助。国产系统越来越普及,这类兼容性问题的解决方案很有价值!
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

圆梦公社,专注于为全球华人提供纯粹技术交流的地方,请勿发布任何政治及违法的言论。如有相关侵权、举报、投诉及建议等,请发 E-mail:dzh188@hotmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部