`

apache 设置中的两个指令 EnableMMAP/EnableSendfile

阅读更多

apache 中的目录为 windows 共享文件夹时,出现了一种情况:

访问大文件时>100k,只能送出前30k左右的内容,

在 ie中如何刷新都不能显示完整, 在 firefox中刷新几次后可显示完整,用 wget时,可看出明显的续传的过程.

 

需要关闭以下两项, 具体还是不知为何,但行之有效:

EnableMMAP 指令

说明语法默认值作用域覆盖项状态模块
在递送中使用内存映射(memory-mapping)来读取文件
EnableMMAP On|Off
EnableMMAP On
server config, virtual host, directory, .htaccess
FileInfo
核心(C)
core

此指令指示httpd在递送中如果需要读取一个文件的内容,它是否可以使用内存映射。当处理一个需要访问文件中的数据的请求时,比如说当递送一个使用mod_include进行服务器端分析的文件时,如果操作系统支持,Apache将默认使用内存映射。

这种内存映射有时会带来性能的提高,但在某些情况下,您可能会需要禁用内存映射以避免一些操作系统的问题:

  • 在一些多处理器的系统上,内存映射会减低一些httpd的性能。
  • 在挂载了NFS的DocumentRoot上,若已经将一个文件进行了内存映射,则删除或截断这个文件会造成httpd因为分段故障而崩溃。

在可能遇到这些问题的服务器配置过程中,您应当使用下面的命令来禁用内存映射:

EnableMMAP Off

对于挂载了NFS的文件夹,可以单独指定禁用内存映射:

<Directory "/path-to-nfs-files"> EnableMMAP Off </Directory>

EnableSendfile 指令

说明语法默认值作用域覆盖项状态模块兼容性
使用操作系统内核的sendfile支持来将文件发送到客户端
EnableSendfile On|Off
EnableSendfile On
server config, virtual host, directory, .htaccess
FileInfo
核心(C)
core
仅在 Apache 2.0.44 及以后的版本中可用

这个指令控制httpd是否可以使用操作系统内核的sendfile支持来将文件发送到客户端。默认情况下,当处理一个请求并不需要访问文件内部的数据时(比如发送一个静态的文件内容),如果操作系统支持,Apache将使用sendfile将文件内容直接发送到客户端而并不读取文件。译者注:Linux2.4/2.6内核都支持。

这个sendfile机制避免了分开的读和写操作以及缓冲区分配,但是在一些平台或者一些文件系统上,最好禁止这个特性来避免一些问题:

  • 一些平台可能会有编译系统检测不到的有缺陷的sendfile支持,特别是将在其他平台上使用交叉编译得到的二进制文件运行于当前对sendfile支持有缺陷的平台时。
  • 在Linux上启用IPv6时,使用sendfile将会触发某些网卡上的TCP校验和卸载bug。
  • 当Linux运行在Itanium处理器上的时候,sendfile可能无法处理大于2GB的文件。
  • 对于一个通过网络挂载了NFS文件系统的DocumentRoot (比如:NFS或SMB),内核可能无法可靠的通过自己的缓冲区服务于网络文件。

如果出现以上情况,你应当禁用sendfile :

EnableSendfile Off

针对NFS或SMB,这个指令可以被针对目录的设置覆盖:

<Directory "/path-to-nfs-files"> EnableSendfile Off </Directory>

分享到:
评论

相关推荐

    Apache的ProxyPass指令详解

    - 在使用`ProxyPass`指令时,建议将`ProxyRequests`指令设置为`Off`。 - 排除路径的指令必须在通用的`ProxyPass`指令之前配置。 - 当与后端服务器之间存在防火墙时,建议开启`keepalive`选项,以避免防火墙丢弃不...

    Linux中Apache的配置详解

    例如,可以使用`.htaccess`文件来设置基于文件夹的权限控制,或者通过`&lt;Directory&gt;`块中的`Order`和`Allow`指令来控制访问。 #### 四、总结 通过上述步骤,我们可以完成Apache在Linux系统上的安装和基本配置。...

    apache模块mod_concatx 提高js/css加载速度

    2. 在Apache配置文件中添加加载模块的指令,例如:`LoadModule concat_module modules/mod_concatx.dll`。 3. 配置合并规则,例如使用`&lt;IfModule mod_concat.c&gt;`和`&lt;/IfModule&gt;`标签来定义一组文件进行合并。 4. ...

    .在32位操作系统上配置apache+tomcat集群/负载均衡/session复制

    每个Tomcat实例需要设置`jvmRoute`属性,如在server.xml的Engine或Host元素中添加: ```xml ``` 同时,Apache的配置中要指定`stickysession`以保持用户会话与特定的Tomcat实例关联: ```apacheconfig ProxySet ...

    Apache的httpd.conf文件常用指令解释

    这两个指令分别指定Apache进程运行时使用的用户和组,例如:“User apache”和“Group apache”。这有助于限制服务器的权限,提高安全性。 4. **ServerAdmin**: 设置服务器管理员的电子邮件地址,用于在发生错误...

    Apache中设置多个端口

    Apache 中设置多个端口,实现多个端口网站 Apache 服务器是当前最流行的 Web 服务器之一,它提供了强大的功能和灵活的配置选项。其中,设置多个端口是 Apache 服务器的一项重要功能,它允许用户在同一台服务器上...

    apache-tomcat-7.0.8 32bit/64bit 安装版

    Apache Tomcat 7.0.8 是一个广泛使用的开源软件,用作Java Servlet和JavaServer Pages(JSP)的Web应用程序服务器。它是由Apache Software Foundation维护的Tomcat项目的一部分,专注于提供一个轻量级、高性能的Java...

    apache 局域网访问配置方案第1/2页

    本文将详细介绍 Apache 局域网访问配置方案的主要组件、配置指令和实现安全设置的方法。 一、Apache 配置文件结构 Apache 配置文件通常位于服务器的 etc/apache2 或 etc/httpd 目录下,文件名为 apache2.conf 或 ...

    org.apache.commons.lang jar包下载

    commons-lang3.3.1.jar、Apache Commons包中的一个,包含了一些数据类型工具类,是java.lang.*的扩展。必须使用的jar包。为JRE5.0+的更好的版本所提供 Jar文件包含的类: META-INF/MANIFEST.MFMETA-INF/LICENSE....

    解决apache对含中文的url网址的支持问题(64位)

    在标题和描述中提到的"关闭了EncodingEngine on才能运行",可能是指在特定环境下,将`mod_encoding`的EncodingEngine指令设置为`Off`能解决中文URL的问题。`EncodingEngine`指令控制了Apache是否自动转换请求的URL...

    Apache HttpClient 4.5.6

    Apache HttpComponents Client的4.5.6版本 ,下载引入工程即可。

    在Apache中设置目录权限

    在Apache服务器中,设置目录权限是一项至关重要的任务,它直接影响着服务器的安全性、稳定性和效率。Apache配置文件中,我们通常使用`&lt;Directory&gt;`指令来指定特定目录的访问规则。例如,`&lt;Directory "/...

    Apache 的http.conf设置(ALias, Location)

    Apache HTTP服务器是世界上最流行的Web服务器软件之一,它允许你托管静态和动态内容。在配置Apache时,`httpd.conf`是主要的配置文件,其中包含了...理解并熟练掌握这两个指令,对于管理和优化Apache服务器至关重要。

    apache模块 合并多个js/css 更新64位版本

    至于`apache2.4_win64`和`apache2.2_win64`,这两个文件夹分别包含了适用于64位系统的Apache 2.4和2.2版本的预编译模块,方便那些不熟悉源代码编译的用户直接使用。同样,`apache2.2_win32`和`apache2.4_win32`则是...

    org.apache.log4j

    Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式...

    org.apache.batik包

    Apache Batik是Apache软件基金会开发的一个开源项目,主要用于处理SVG(Scalable Vector Graphics)图形。这个包在Java环境中提供了一整套工具和库,使得开发者可以创建、修改、显示和转换SVG内容。SVG是一种基于XML...

    apache-tomcat-6.0.35 32bit/64bit 安装版本

    在本教程中,我们将深入探讨如何下载、安装以及配置Apache Tomcat 6.0.35。 首先,`apache-tomcat-6.0.35.rar`是该版本Tomcat的压缩文件,用户需要先进行解压。RAR是一种常见的文件压缩格式,可以使用WinRAR或其他...

    linux中apache安装与配置

    例如,如果你想改变Apache监听的端口,可以在配置文件中找到`Listen`指令,修改默认的80端口为其他未被占用的端口: ```apacheconf Listen 8080 ``` 为了允许从互联网访问,还需要确保Apache的防火墙规则允许HTTP...

    Apache服务器指令大全

    AllowOverride参数可以设置哪些配置指令可以在`.htaccess`文件中覆盖。 10. Port:设置服务器监听的网络端口,通常为80(HTTP)或443(HTTPS)。 11. ServerAdmin:定义服务器管理员的电子邮件地址,用于发送错误...

Global site tag (gtag.js) - Google Analytics