昨晚下定决心放弃 OpenLiteSpeed 了,从开始到放弃历时七天。总结下来放弃 OpenLiteSpeed 主要是实在不适合明月当前的需要,用起来不是锦上添花而是个累赘了都,今天明月就给大家总结分享一下这次 OpenLiteSpeed 从开始到放弃的经历。
一、Nginx 的 Rewrite 规则无法转换兼容
明月对 OpenLiteSpeed 产生兴趣主要听说其优秀的 PHP 执行效率以及应对大流量时候的平稳,从安装开始(可参考【正式在国内阿里云服务器上使用 OpenLiteSpeed 了】一文)就已经体会到 OpenLiteSpeed 的另类之处,在随后加入了 7 个 WordPress 站点(不同内容、不同主题、不同插件)后,就发现了一个“顽疾”问题,基本是无解。那就是一个 Nginx 的 rewrite 规则的转换问题!
这个 rewrite 规则主要是为了实现 timthumb.php 裁剪的文章缩略图动态链接为静态化的,具体效果大家可以参考本博客首页、文章列表页的文章缩略图片网址即可,这么做的目的就是能更好的利用 CDN 缓存规则优化网站载入速度(实测效果明显提速出众),是 Dragon 主题的特色之一(也是明月一直都在推荐 Dragon 主题的主要原因)。谁能想到就这么一条 Nginx rewrite 规则竟然无法转换到 OpenLiteSpeed 上使用生效:
rewrite ^/timthumb/([0-9A-Za-z]+)/w/([0-9]+)/h/([0-9]+)/q/([0-9]+)/zc/([0-9])/a/([a-z]+)/spm/([0-9A-Za-z]+)\.([0-9a-z]+)$ /wp-content/themes/dragon/functions/timthumb.php?src=$1&w=$2&h=$3&q=$4&zc=$5&a=$6&spm=$7;
明月用了两天时间查阅大量的资料,甚至在 OpenLiteSpeed 社区里求助,都没有找到解决办法,到现在都已经过去四天了,依然是没有看到能解决的希望,OpenLiteSpeed 官方人员也是无能为力,虽然 OpenLiteSpeed 延续的是 Apache 的重写规则,但就这个 rewrite 规则无法兼容和转换成功。这就带来了 SEO 和页面载入速度两个问题,搜索引擎开始不断的回源抓取已经收录的伪静态缩略图链接,都给返回 404 错误了;每次载入页面都只能 timthumb.php 动态请求的方式裁剪图片,造成某些站点首页 Ctrl+F5 强制刷新一次就给服务器上的 OpenLiteSpeed 造成了直接宕机的负载飙升:
试问有几个国内云服务器经得起这种负载飙升呀?
选择 OpenLiteSpeed 是尽量发挥云服务器性能的,不是来让负载飙升的,更不是来要求升级服务器配置的,为此明月也试图通过调整 OpenLiteSpeed、PHP 配置缓解这种情况,这就引出来了第二个无解的“顽疾”。
二、OpenLiteSpeed 的 LSAPI 调用 PHP 机制
理论上 OpenLiteSpeed 的 LSAPI 运行 PHP 速度会更快,但明月感觉 OpenLiteSpeed 好像忽略了服务器承受能力极限的问题,在配置里设定了 PHP_LSAPI_CHILDREN limit 限制的变量直接被无视了都,依旧会瞬间出现 lsphp 进程执行拥堵的问题,刚开始是 Ctrl+F5 强制刷新造成的,最后竟然直接就是正常载入首页都不行了。
并且 PHP 明明开启了 OPCache,不是去调用 OPCache 缓存,而是依旧直接调用 lsphp 进程执行 PHP 代码,就算是 WordPress 上已经启用了 LiteSpeed Cache 插件也依旧如故,也不知道给 PHP 开启 OPCache 有啥意义?总不能为了 OpenLiteSpeed 而去刻意精简网站上首页布局吧?
三、MySQL/MariaDB 数据库缺乏原生支持
安装过 OpenLiteSpeed 的都知道,OpenLiteSpeed 环境下数据库是需要独立安装和配置的,OpenLiteSpeed 面板上也没有管理数据库的接口基本算是两个独立的 Linux 应用,这样的逻辑下自然也没有针对性的数据库配置了,使用过 LNMP 的都知道,每次安装部署完数据库的配置都已经默认配置好了,虽然部分配置参数需要根据具体硬件配置进行调整,但也总比配置一片空白,完全需要自己手动一个一个参数加入高效了。
OpenLiteSpeed 里就是这么尴尬,并且官方文档里也没有建议的数据库配置参考,社区里官方人员都是以及数据库不属于 OpenLiteSpeed 组件为由拒绝回答帮助。这样的情况明月只能自己配置数据库参数了,而参考 LNMP 环境的数据库配置,运行起来极不稳定,刚开始的三天数据库进程几乎每天都会莫名其妙的死掉,还大部分都是凌晨至早上这个时间段,每次看到网站数据库连接报错给人的感觉非常的不好,虽然最后给数据库加入了自动重启算是勉强解决了,但这样的运维环境真的是让人放心不下。
还是这个负载看着舒服!
四、总结
综上所述,无论是 OpenLiteSpeed 稳定版还是预览版目前都不适合明月的运维需求,勉强用下去几乎也就没有什么用户体验之说了,rewrite 规则不仅仅带来的是速度下降的问题,还会有安全上的隐患,随便一个 CC 攻击利用一下都可以几分钟内轻松让服务器挂掉。PHP 的问题更是头疼,但凡稍微布局复杂一些、内容多一些的首页都有可能造成可怕的负载飙升。数据库的不稳定,连定时自动备份都受到影响了,这就真的是不能接受了,总不能天天盯着服务器吧?所以,昨天明月果断放弃了 OpenLiteSpeed,重新用回纯净的 LNMP 环境,上述所有的问题麻烦都没有了!
明月感觉 OpenLiteSpeed 可能在某些简单的应用场景表现优秀,比如:1-2 个网站、配置上没有特殊需求的用起来还是很不错的,但并不适用明月,还好明月专门抽出时间在阿里云服务器上测试这一周,要不还真的是发现不了这些“顽疾”。这里建议大家还是要遵循“实践才是检验真理的唯一标准”这句至理名言,不要盲目跟从。