OpenResty 历险记
OpenResty Markdown PostgreSQL About 1,379 words背景介绍
由于后端服务运行在1核1G云机上,跑着Nginx、php-fpm、MongoDB、Elasticsearch、Redis,Swap了2G内存(自我安慰)。
到了每天阿里云扫描时段,短信告警一条接一条,CPU直接100%。
机器瓶颈
发现php-fpm占用了5个进程,每个进程大约100M内存,导致Es只限制了250M的内存上限,MongoDB更是只有150M,Nginx和Redis一直在角落里瑟瑟发抖,OMG!
高级武器
OpenResty 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。
以前就了解过OpenResty,Kong网关、知乎静态资源、CSDN等这些都是基于OpenResty。有这么多企业选择它,那我也就跟随大部队,追星一把。
陷入困境
经过几天的摸索,MongoDB可以由lua-resty-mongol实现连接,Redis由内置模块支持,页面渲染由lua-resty-template模板引擎可以搞定,但是有一个问题三天还没有解决。
将以Markdown标记的文章,转换为HTML的库有:
- bungle/lua-resty-hoedown: 
bungle大佬作品,需要依赖Hoedown动态库(博主在Windows平台尝试多种方式未编译通过,*nix平台可以编译),末次更新2015/12。 - mpeterv/markdown.lua: 纯
Lua语言实现,但渲染代码块有问题,末次更新2015/09。 - asb/lua-discount: 
C语言实现,需依赖Linux中的Discount(yum/apt-get安装),无法在Windows调试开发,末次更新2010/05。 - jgm/lunamark: 
jgm出品,Windows平台多次尝试未安装成功,末次更新2019/05。 
目前还没有Windows平台可用的Markdown转HTML的解决方案。(针对Lua语言而言。)
整装待发
项目后端打算使用OpenResty + PostgreSQL替换PHP + MongoDB。MongoDB的数据同步将通过PostgreSQL的FDW功能完成。
希望能一路顺利,少踩坑。
OpenResty见。
后记
2021/02/15更新上线,历时一年。Markdown转HTML最后选择由前端JavaScript库 mark.js 转换。
技术栈
- OpenResty:基于
Nginx的高性能Web服务器 - lua-resty-template:适用
Nginx和OpenResty的HTML模板渲染引擎 - pgmoon:
PostgreSQL的Lua驱动 - lua-resty-woothee:基于
Woothee的User-Agent解析器 - lua-resty-http:
OpenResty和ngx_lua中的HTTP客户端 - lua-resty-auto-ssl:自动注册和更新
Let's Encrypt的https证书 
开源地址
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓