diff --git a/README.md b/README.md index 284f811..26fb792 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,9 @@ ## 优势 +- [ ] 代表需要手动开启 +- [x] 代表内置开启 + 内置如下模块/特性: - 内嵌模块 @@ -26,12 +29,12 @@ - [x] [ssl配置](book/02配置样例/01ssl配置样例.md) - 调优列表 - [x] [worker数量](book/03配置调优/01worker数量调优.md) - - [x] [使用HTTP2](book/03配置调优/02使用HTTP2.md) - - [x] [SSL会话缓存](book/03配置调优/03SSL会话缓存.md) - - [x] [使用server_name代替if指令判断domain](book/03配置调优/04使用server_name代替if指令判断domain.md) - - [x] [使用$request_uri代替正则](book/03配置调优/05使用$request_uri代替正则.md) - - [x] [使用try_files指令来确保文件存在](book/03配置调优/06使用try_files指令来确保文件存在.md) - [x] [使用return代替rewrite做重定向](book/03配置调优/07使用return代替rewrite做重定向.md) + - [ ] [使用HTTP2](book/03配置调优/02使用HTTP2.md) + - [ ] [SSL会话缓存](book/03配置调优/03SSL会话缓存.md) + - [ ] [使用server_name代替if指令判断domain](book/03配置调优/04使用server_name代替if指令判断domain.md) + - [ ] [使用$request_uri代替正则](book/03配置调优/05使用$request_uri代替正则.md) + - [ ] [使用try_files指令来确保文件存在](book/03配置调优/06使用try_files指令来确保文件存在.md) ### 构建介质 diff --git "a/book/03\351\205\215\347\275\256\350\260\203\344\274\230/08\345\220\257\347\224\250PCRE JIT\344\273\245\345\212\240\351\200\237\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\347\232\204\345\244\204\347\220\206.md" "b/book/03\351\205\215\347\275\256\350\260\203\344\274\230/08\345\220\257\347\224\250PCRE JIT\344\273\245\345\212\240\351\200\237\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\347\232\204\345\244\204\347\220\206.md" index 28d986a..a689dae 100644 --- "a/book/03\351\205\215\347\275\256\350\260\203\344\274\230/08\345\220\257\347\224\250PCRE JIT\344\273\245\345\212\240\351\200\237\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\347\232\204\345\244\204\347\220\206.md" +++ "b/book/03\351\205\215\347\275\256\350\260\203\344\274\230/08\345\220\257\347\224\250PCRE JIT\344\273\245\345\212\240\351\200\237\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\347\232\204\345\244\204\347\220\206.md" @@ -4,21 +4,30 @@ - [更多nginx文档](https://weiliang-ms.github.io/nginx/) - [更多linux相关文档](https://weiliang-ms.github.io/wl-awesome/) -> 解释说明 +> 使用`pcre_jit`的优势 -1. 正则检查规则可能非常耗时,尤其是复杂的正则表达式(regex)条件,允许对正则表达式使用`JIT`可以加快处理速度。 -2. 通过使用`PCRE`库编译`NGINX`,可以用`location`块执行复杂的操作,并使用强大的`rewrite`指令 -3. +正则检查规则可能非常耗时,尤其是复杂的正则表达式(regex)条件,允许对正则表达式使用`JIT`可以加快处理速度。 -> 使用样例 +通过使用`PCRE`库编译`NGINX`,可以用`location`块执行复杂的操作,并使用强大的`rewrite`指令 -- 不建议实现方式 +`PCRE JIT`规则匹配引擎可以显著提高正则表达式的处理速度,带有`pcre_jit`的`NGINX`比没有它的`NGINX`快很多(处理正则表达式)。 +这个选项可以提高性能。 -```nginx configuration -``` +> 使用`pcre_jit`的劣势 -- 建议实现方式 +在某些情况下,`pcre_jit`可能有负面影响,具体参考[PCRE性能优化](../优秀文档/PCRE性能优化.md) -```nginx configuration +> 启用方式 + +- `pcre8.20+` +- `nginx`编译时添加参数: `--with-pcre=path_to_pcre8.20+ --with-pcre-jit` -``` +> 使用方式 + +```nginx configuration +http { + ... + pcre_jit on; + ... +} +``` \ No newline at end of file diff --git "a/book/\344\274\230\347\247\200\346\226\207\346\241\243/PCRE\346\200\247\350\203\275\344\274\230\345\214\226.md" "b/book/\344\274\230\347\247\200\346\226\207\346\241\243/PCRE\346\200\247\350\203\275\344\274\230\345\214\226.md" new file mode 100644 index 0000000..4213f1e --- /dev/null +++ "b/book/\344\274\230\347\247\200\346\226\207\346\241\243/PCRE\346\200\247\350\203\275\344\274\230\345\214\226.md" @@ -0,0 +1,40 @@ +[原文:PCRE Performance Project](https://zherczeg.github.io/sljit/pcre.html) + +## PCRE性能优化 + +### 简介 + +`PCRE-sljit`项目的目的是提高[pcre](http://www.pcre.org/) 库的模式匹配速度。 + +该项目通过使用`sljit`来完成的,`sljit`是一个即时(JIT)编译库, +用于从`pcre_compile()`生成的内部字节码表示转换机器码。 + +`PCRE-sljit`在通用模式上提供了与基于`DFA`的引擎(如`re2`)相似的匹配速度,但仍然保持`PERL`兼容性。 + +该功能已经作为`PCRE 8.20`及以上版本的一部分发布,`JIT`在`8.32`中得到了很大的改进,并且引入了一个原生的接口。 + +### 关于性能优化 + +只有在匹配正则表达式占总运行时至少`4-5`%的情况下,`PCRE-JIT`才会对您有所帮助。 + +否则,由于二进制布局的改变,可能不会有任何性能提高(或者会看到性能下降) + +不幸的是,由于`CPU`缓存布局、分支预测机制等原因,插入`nops`可以增加或减少最多可达`3%`的程序运行时间,。 + +在人为干预下,运行时间的变化幅度可能更大(例如±50%)。当任何函数被修改时,即使改变很小,它也会影响整个二进制布局, +因为其他函数的入口偏移量也会被改变(特别是那些被链接器放在可执行文件中该函数之后的函数)。 +因此,当匹配正则表达式的比例非常低时,在使用`PCRE-JIT`时,您可能会遇到性能的轻微下降。 + +### Usage + +TODO + +### Motivation + +### 工作原理 + +### Why is it faster? + +### 编译时开销 + + diff --git a/rpmbuild/SOURCES/nginx.conf b/rpmbuild/SOURCES/nginx.conf index 47e88f7..7dabc0a 100644 --- a/rpmbuild/SOURCES/nginx.conf +++ b/rpmbuild/SOURCES/nginx.conf @@ -6,6 +6,9 @@ worker_rlimit_nofile 65535; working_directory /var/dump/nginx; pid /var/run/nginx.pid; +# pcre JIT +pcre_jit off; + events { use epoll; worker_connections 10240; @@ -19,7 +22,7 @@ http { large_client_header_buffers 4 512k; default_type application/octet-stream; - index index.php index.htm index.html index.$geo.html; + index index.php index.htm index.html; #web security #include conf/naxsi/naxsi_core.rules; @@ -63,9 +66,6 @@ http { more_set_headers "Server: Unknown"; absolute_redirect off; - # pcre JIT - pcre_jit on; - # compress gzip on; gzip_min_length 1k;