将Lua代码基地从自定义HTTP服务器迁移到Nginx后,延迟变高
2016-2-9 20:4:47
收藏:0
阅读:60
评论:0
在过去的几年中,我们一直在运行一个自定义的、预分叉的、用C++、libevent和嵌入式Lua(使用与openresty(Nginx包)使用相同的LuaJit共享库的LuaJit)编写的HTTP服务器。仅仅凭巧合,它与Nginx具有几乎相同的架构。
该服务器的大部分业务功能都在Lua脚本的“处理程序”中,当我们看到Nginx支持Lua时,我们认为我们会将我们的代码库转移到Nginx,并利用Nginx拥有的所有社区支持。我们将所有代码移动过去,并经过测试,显示一切正常,就功能保持不变而言,然而.......
我们遇到了一个问题。旧的自定义C++服务器的HTTP请求延迟通常为2毫秒。基于Nginx的新服务器约为60毫秒。有一件奇怪的事情是,我们使用Lua os.clock()来计时代码区域的实际Lua代码执行的内部测量显示,两个服务器版本在Lua执行速度方面几乎是相同的。
使用各种分析器不显示Nginx代码中任何极大的缓慢区域。pcre是时间花费的最高点,约为6%。
还有一件事情。我们的设置有一个代理Nginx服务器,与我们的Nginx Lua服务器通话,在同一台机器上,通过127.0.0.1通话,因此它是LAN => Nginx Proxy => Nginx Lua Server。
ldd nginx
linux-vdso.so.1 => (0x00007ffc02ff3000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f88d0b46000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f88d090f000)
libluajit-5.1.so.2 => /d1/apps/mt3/openresty/luajit/lib/libluajit-5.1.so.2 (0x00007f88d069a000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f88d0418000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f88d01db000)
libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f88cff79000)
libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f88cfb81000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f88cf97d000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f88cf765000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f88cf3da000)
/lib64/ld-linux-x86-64.so.2 (0x00007f88d0d72000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f88cf1c4000)
有没有什么想法?
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法