Nginx性能优异在于善于利用操作系统内核的各种特性,比如aio/epoll/sendfile(Linux)/kqueue(FreeBSD)等。对于使用VPS做图片站的站长来说,使用nginx的aio特性会大大提高性能,图片站的特点是大量的读io操作,nginx aio不用等待每次io的结果,有助于并发处理大量io和提高nginx处理效率。
如果包里的nginx没有包含Linux-native aio(asynchronous I/O)的支持,那么需要下载nginx源代码并带上参数--with-file-aio编译。除了要带参数外,Linux内核还必须有支持这一特性的api-eventfd(),否则在nginx错误日志(/var/log/nginx/error.log)里会看到类似的报错:
eventfd() failed (38: Function not implemented)
worker process 1858 exited with fatal code 2 and can not be respawn
解决方法很简单,升级内核就可以了。
要让nginx使用aio特性还需要修改nginx配置文件:
# vim /usr/local/nginx/conf/nginx.conf
...
location / {
aio on;
directio 1;
output_buffers 1 128k;
}
...
Linux-native aio比传统的POSIX aio功能更丰富一些,重要的一点是能通过内核加速提供高性能。直接用Linux-native aio API比较晦涩,为了方便使用和开发Linux-native aio应用程序,我们可以用libaio/libaio-devel库。不过nginx的作者没有用这些库,因为nginx需要eventfd(),而libaio库里只有0.3.107版本起才支持eventfd,nginx也没有用glibc,因为glibc要到2.8版本才支持eventfd(),为了减少对库的依赖性,nginx干脆直接用Linux-native aio API。
$ vim nginx/src/event/modules/ngx_epoll_module.c
...
#if (NGX_HAVE_FILE_AIO)
/*
* We call io_setup(), io_destroy() io_submit(), and io_getevents() directly
* as syscalls instead of libaio usage, because the library header file
* supports eventfd() since 0.3.107 version only.
*
* Also we do not use eventfd() in glibc, because glibc supports it
* since 2.8 version and glibc maps two syscalls eventfd() and eventfd2()
* into single eventfd() function with different number of parameters.
*/
...
这里说到了eventfd(),eventfd是Linux-native aio其中的一个API,用来生成file descriptors,这些file descriptors可为应用程序提供更高效“等待/通知”的事件机制。和pipe作用相似,但比pipe更好,一方面它只用到一个file descriptor(pipe要用两个),节省了内核资源,另一方面,eventfd的缓冲区管理要简单得多,pipe需要不定长的缓冲区,而eventfd全部缓冲只有定长8 bytes。
分享到:
相关推荐
这个名为"nginx-prometheus-exporter-0.11.0-linux-386.tar.gz"的压缩包,包含了用于在32位Linux系统上运行的Nginx-Prometheus-Exporter的0.11.0版本。以下是压缩包内各个文件的作用: 1. **LICENSE**:这是项目所...
这个名为"nginx-linux-arm64.zip"的压缩包提供的是专为ARM64架构(也称为AArch64)编译的Nginx版本,适用于基于Linux操作系统的64位ARM处理器设备,如树莓派、某些云服务器或嵌入式系统。无需繁琐的编译过程,只需...
Nginx 是一个高性能的 Web 和反向代理服务器,而 nginx-http-flv-module 是 Nginx 的一个扩展模块,专门用于支持实时流媒体(RTMP)和FLV格式的视频流。让我们深入探讨这个组合的相关知识点。 1. **Nginx 概述** ...
**Nginx与Nginx-RTMP及Nginx-HTTP-FLV模块** Nginx是一款高性能、轻量级的Web服务器/反向代理服务器,被广泛应用于高并发场景,尤其在处理静态文件、HTTP缓存以及反向代理等方面表现出色。Nginx以其高效的事件驱动...
本资源提供的是一款针对Windows平台的Nginx,其中已经集成了`nginx-http-flv-module`模块,这个模块主要用于支持HTTP实时流(HTTP Live Streaming, HLS)和Flash视频流(Flash Video, FLV)。现在我们将深入探讨这一...
使用Nginx-http-flv-module和nginx-rtmp-module创建的流媒体服务通常能很好地在各种操作系统和浏览器上运行,包括Windows、Linux、macOS,以及Chrome、Firefox、Safari等。对于不支持HLS的老旧浏览器,可以通过...
总之,Nginx-GUI-For-Linux-X64-v1.6.zip是一个方便的工具,它将Nginx的强大功能与图形化操作相结合,降低了使用门槛,提升了管理效率,无论是对于个人开发者还是企业运维团队,都是一个值得尝试的选择。
修改好 "ingress-nginx-controller-1.9.yaml" 文件后,可以使用 `kubectl apply -f ingress-controller-1.9.yaml` 命令进行部署。对于 "nginx-tomcat-svc-ingress.yaml" 和 "nginx-tomcat-deploy.yaml",同样使用 `...
nginx sticky是nginx的module,可以实现基于cookie的负载均衡。 下载后,在编译安装nginx时,用--add-module... ./configure --prefix=/usr/local/nginx-1.6.0 --add-module=../nginx-sticky-module-1.25 --without-...
nginx-1.22.1-1.sles12.ngx.x86_64.rpm文件 nginx-1.22.1-1.sles12.ngx.x86_64.rpm文件 nginx-1.22.1-1.sles12.ngx.x86_64.rpm文件 nginx-1.22.1-1.sles12.ngx.x86_64.rpm文件 nginx-1.22.1-1.sles12.ngx.x86_64.rpm...
--> nginx-1.21.6 ======================== 在网上查找半天都只有教程,没有可免费下载的版本,深知没有积分遍地找资源的痛苦,无奈之下只好自己按照教程一步一个坑编译出来的,供大家免费下载使用。(无毒放心使用...
在这个"nginx-linux-1.24.0.tar.gz"压缩包中,包含的是针对Linux系统的Nginx 1.24.0版本的源码。以下将详细介绍如何在Linux环境下安装和使用这个版本的Nginx。 首先,我们需要了解Linux的基础操作。Linux是一种多...
Nginx-Module-VTS是Nginx的一个增强模块,主要功能是提供详细的Web服务器访问统计和性能监控。Prometheus是一款流行的开源监控和警报工具,广泛用于收集和分析各种系统的指标。在本场景中,Nginx-Module-VTS与...
压缩包子文件的文件名"nginx-1.19.3_Compiled"表示包含了编译好的Nginx服务器,这通常包括配置文件、二进制可执行文件和其他必要的库文件。用户解压后,可以在自己的服务器上直接部署这个版本的Nginx,无需经历复杂...
1. **Nginx源码**:这里使用的是版本1.18.0,文件名为`nginx-1.18.0.zip`。Nginx是一款高性能的Web服务器和反向代理服务器,可以处理静态内容、动态内容以及流媒体服务。 2. **OpenSSL**:`openssl-1.1.1f.tar.gz`...
在提供的压缩包文件"nginx-upstream-jvm-route-master"中,可能包含了源代码、配置示例、安装指南或者使用文档,帮助用户理解和实现这一特性。用户需要按照文档的指示进行配置和部署,以便在Nginx 1.15中成功使用...
Linux FastDFS-Nginx-Module 1.22 是一个专为Linux系统设计的高性能、高可用性的文件存储和分发系统,它结合了FastDFS文件服务器和Nginx网络服务器的功能,使得在Web环境中部署文件服务变得更为便捷。这个版本的模块...
1、最新版 nginx-http-flv-module(linux可执行程序,含nginx 1.19.3,http-flv-module:1.2.7) 2、内含说明文档,请下载查看。 3、请勿放置于中文路径下,否则无法启动 4、sbin/nginx -c conf/nginx.conf
在Linux系统中部署Nginx,可以为网站提供高性能的访问支持。以下将详细介绍如何在Linux环境下安装和配置Nginx。 1. **系统准备** 在开始安装Nginx之前,确保你的Linux系统是最新的。可以通过运行`sudo apt-get ...
资源说明: 1. 采用nginx最新版编译,包含最新的nginx-http-flv-module,以及基础模块openssl、prce、zlib ...2. 使用cmd命令打开DOS,并切换到D:\nginx-1.19.3 3. 使用nginxservice.exe install安装