我的 OpenLiteSpeed 从开始到放弃之经历

昨晚下定决心放弃 OpenLiteSpeed 了,从开始到放弃历时七天。总结下来放弃 OpenLiteSpeed 主要是实在不适合明月当前的需要,用起来不是锦上添花而是个累赘了都,今天明月就给大家总结分享一下这次 OpenLiteSpeed 从开始到放弃的经历。

我的 OpenLiteSpeed 从开始到放弃之经历

一、Nginx 的 Rewrite 规则无法转换兼容

明月对 OpenLiteSpeed 产生兴趣主要听说其优秀的 PHP 执行效率以及应对大流量时候的平稳,从安装开始(可参考【正式在国内阿里云服务器上使用 OpenLiteSpeed 了】一文)就已经体会到 OpenLiteSpeed 的另类之处,在随后加入了 7 个 WordPress 站点(不同内容、不同主题、不同插件)后,就发现了一个“顽疾”问题,基本是无解。那就是一个 Nginx 的 rewrite 规则的转换问题!

我的 OpenLiteSpeed 从开始到放弃之经历

这个 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 是尽量发挥云服务器性能的,不是来让负载飙升的,更不是来要求升级服务器配置的,为此明月也试图通过调整 OpenLiteSpeed、PHP 配置缓解这种情况,这就引出来了第二个无解的“顽疾”。

二、OpenLiteSpeed 的 LSAPI 调用 PHP 机制

理论上 OpenLiteSpeed 的 LSAPI 运行 PHP 速度会更快,但明月感觉 OpenLiteSpeed 好像忽略了服务器承受能力极限的问题,在配置里设定了 PHP_LSAPI_CHILDREN limit 限制的变量直接被无视了都,依旧会瞬间出现 lsphp 进程执行拥堵的问题,刚开始是 Ctrl+F5 强制刷新造成的,最后竟然直接就是正常载入首页都不行了。

我的 OpenLiteSpeed 从开始到放弃之经历

并且 PHP 明明开启了 OPCache,不是去调用 OPCache 缓存,而是依旧直接调用 lsphp 进程执行 PHP 代码,就算是 WordPress 上已经启用了 LiteSpeed Cache 插件也依旧如故,也不知道给 PHP 开启 OPCache 有啥意义?总不能为了 OpenLiteSpeed 而去刻意精简网站上首页布局吧?

我的 OpenLiteSpeed 从开始到放弃之经历

三、MySQL/MariaDB 数据库缺乏原生支持

安装过 OpenLiteSpeed 的都知道,OpenLiteSpeed 环境下数据库是需要独立安装和配置的,OpenLiteSpeed 面板上也没有管理数据库的接口基本算是两个独立的 Linux 应用,这样的逻辑下自然也没有针对性的数据库配置了,使用过 LNMP 的都知道,每次安装部署完数据库的配置都已经默认配置好了,虽然部分配置参数需要根据具体硬件配置进行调整,但也总比配置一片空白,完全需要自己手动一个一个参数加入高效了。

我的 OpenLiteSpeed 从开始到放弃之经历

OpenLiteSpeed 里就是这么尴尬,并且官方文档里也没有建议的数据库配置参考,社区里官方人员都是以及数据库不属于 OpenLiteSpeed 组件为由拒绝回答帮助。这样的情况明月只能自己配置数据库参数了,而参考 LNMP 环境的数据库配置,运行起来极不稳定,刚开始的三天数据库进程几乎每天都会莫名其妙的死掉,还大部分都是凌晨至早上这个时间段,每次看到网站数据库连接报错给人的感觉非常的不好,虽然最后给数据库加入了自动重启算是勉强解决了,但这样的运维环境真的是让人放心不下。

我的 OpenLiteSpeed 从开始到放弃之经历

还是这个负载看着舒服!

四、总结

综上所述,无论是 OpenLiteSpeed 稳定版还是预览版目前都不适合明月的运维需求,勉强用下去几乎也就没有什么用户体验之说了,rewrite 规则不仅仅带来的是速度下降的问题,还会有安全上的隐患,随便一个 CC 攻击利用一下都可以几分钟内轻松让服务器挂掉。PHP 的问题更是头疼,但凡稍微布局复杂一些、内容多一些的首页都有可能造成可怕的负载飙升。数据库的不稳定,连定时自动备份都受到影响了,这就真的是不能接受了,总不能天天盯着服务器吧?所以,昨天明月果断放弃了 OpenLiteSpeed,重新用回纯净的 LNMP 环境,上述所有的问题麻烦都没有了!

明月感觉 OpenLiteSpeed 可能在某些简单的应用场景表现优秀,比如:1-2 个网站、配置上没有特殊需求的用起来还是很不错的,但并不适用明月,还好明月专门抽出时间在阿里云服务器上测试这一周,要不还真的是发现不了这些“顽疾”。这里建议大家还是要遵循“实践才是检验真理的唯一标准”这句至理名言,不要盲目跟从。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/11073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++基础】最短距离和路径问题

时间限制 : 1 秒 内存限制 : 128 MB 有n个城市&#xff08;编号为1~n&#xff09;&#xff0c;m条道路&#xff08;n < 1000, m < 10000)&#xff0c;每条道路有个长度&#xff08;道路是双向的&#xff0c;两个方向都能走&#xff09;&#xff0c;请找到从起点s到终点…

OpenCV 实时目标检测

0.概述 1.原理介绍 2.代码实现 #include <iostream> #include <opencv2/opencv.hpp>int main() {// Load pre-trained MobileNet SSD model and configurationstd::string model "path_to_mobilenet_iter_73000.caffemodel";std::string config &qu…

List<User>转为Map<Integer,User>

在Java中&#xff0c;可以使用Java 8引入的Stream API来轻松地将List转换为Map。以下是将List转换为Map<Integer, User>的示例代码&#xff0c;其中User对象有一个名为id的整数属性作为唯一标识符。 import java.util.List; import java.util.Map; import java.util.str…

IO进程day6

1&#xff1a;有一个隧道&#xff0c;全长5公里&#xff0c;有2列火车&#xff0c;全长200米&#xff0c; 火车A时速 100公里每小时 火车B时速 50公里每小时 现在要求模拟火车反复通过隧道的场景(不可能2列火车都在隧道内运行…

LLM量化

Efficient Finetuning prefix tuning 针对每种任务&#xff0c;学习prefix vector 启发于prompting&#xff0c;调整上下文内容让模型去输出自己想要的内容 核心就是找到一个上下文去引导模型解决NLP生成任务 传统情况下&#xff0c;我们为了得到想要的结果&#xff0c;会…

[初学rust] 04_rust复合类型

rust复合类型 字符串 由于rust的字符串元素类型是u8(1字节),但是字符类型是unicode(4字节) 索引不能像C那样读取又由于String类型和&str类型都是utf-8编码&#xff0c;中文占3字节切片可能会导致崩溃 slice(切片) 切片就是对String类型中的一部分的引用&#xff0c;它…

语言:C#

一、VSCode生成exe 二、

EasyRecovery(易恢复) 使用测试及详细使用方法

你有没有因为数据丢失懊悔不已&#xff0c;EasyRecovery&#xff08;易恢复&#xff09;&#xff0c;来自美国拥有38年数据恢复的软件&#xff0c;只有收费版&#xff0c;重要事情说三遍&#xff0c;EasyRecovery 没有免费版&#xff0c;可以成功找回删除的部分文件&#xff0c…

SQLite .journal 文件

在之前插入大量数据测试的时候&#xff0c;发现在数据库文件同级目录下会产生一个同名.journal的文件&#xff0c;并且不是一直会存在&#xff0c;而是生成一会就会自动删除&#xff0c;然后继续生成继续删除&#xff0c;直到数据插入完成。 初步猜测&#xff0c;应该是类似 re…

增强客户黏性:服装实体店扫码连锁收银软件提供多样的会员营销策略

随着消费者对购物体验的需求不断提升&#xff0c;服装实体店面临着更大的挑战和机遇。为了增强客户黏性&#xff0c;提升销售业绩&#xff0c;越来越多的服装实体店开始引入扫码连锁收银软件&#xff0c;并提供多样化的会员营销策略。这一举措不仅为店铺提供了更加智能化的经营…

C语言——文件相关操作补充

一、文件读取结束的判定 当我们使用例如fgetc、fgets、fscanf、fread等函数来读取文件内容时&#xff0c;我们可能遇到需要判断文件读取的结束&#xff0c;一般情况下都是通过这些函数的返回值来判断文件读取是否结束。 1、fgetc 返回读取的字符的ASCII值&#xff0c;如果读…

JUnit 4单元测试常用注解和方法

引言 JUnit 4作为Java开发者广泛使用的测试框架&#xff0c;通过提供丰富的注解和断言方法&#xff0c;极大地简化了单元测试的编写和维护。本文将介绍JUnit 4的核心特性和最佳实践。 单元测试的重要性 独立性&#xff1a;每个测试应该是独立的&#xff0c;不依赖于系统状态…

Java 守护线程 ( Daemon Thread )详解

在Java中&#xff0c;线程分为两类&#xff1a;用户线程(User Thread)和守护线程(Daemon Thread)。守护线程是后台线程&#xff0c;主要服务于用户线程&#xff0c;当所有的用户线程结束时&#xff0c;守护线程也会自动结束&#xff0c;JVM会随之退出。守护线程的一个典型例子是…

kaggle竞赛实战1

我们最终的目标是要打比赛、进大厂&#xff0c;因此在熟悉了基本模型后先来看看比赛怎么做的&#xff0c;本文以Elo Merchant Category Recommendation | Kaggle 为样例进行介绍。 首先注意使用kaggle要全程“科学上网”&#xff0c;否则在注册、下载数据等环节都会出现页面挑…

Web前端一套全部清晰 ⑧ day5 CSS.3 选择器、PxCook软件、盒子模型

谁不是一路荆棘而过呢 —— 24.5.12 CSS.3 选择器、PxCook软件、盒子模型 一、选择器 1.结构伪类选择器 1.作用: 根据元素的结构关系查找元素。 选择器 说明 E:first-child 查找第一个 E元素 E:last-child 查找最后一个E元素 E:nth-chil…

计算机网络-负载均衡算法

计算机网络中的负载均衡算法是决定如何将请求分发到各个服务器的关键。目前负载均衡算法主要分为静态负载均衡算法和动态负载均衡算法&#xff0c;具体包括以下几种&#xff1a; 静态负载均衡算法&#xff1a; 1.轮询法&#xff08;Round Robin&#xff09;&#xff1a;按照顺…

【qt】最快的开发界面效率——混合编程

混合编程 一.准备工作1.创建项目2.添加项目资源 二.ui界面设计1.menuBar菜单栏2.action ▲3.toolBar工具栏4.中心组件 三.代码界面设计1.toolBar添加组件2.statusBar状态栏添加组件 四.完成界面的功能1.对action配置信号槽2.对action转到信号槽3.代码添加的组件手动关联槽函数 …

Django REST framework(DRF)是什么?

Django REST framework&#xff08;DRF&#xff09;是什么&#xff1f; Django REST framework&#xff08;简称DRF&#xff09;是一个强大且灵活的工具包&#xff0c;用于构建Web API。它是基于Django&#xff08;一个高级Python Web框架&#xff09;构建的&#xff0c;提供了…

oracle 行转列及列转行

行转列 使用pivot函数实现 行转列 with temp as( select 四川省 nation ,成都市 city,第一 ranking from dual union all select 四川省 nation ,绵阳市 city,第二 ranking from dual union all select 四川省 nation ,德阳市 city,第三 ranking from dual union all select 四…

7 Days yo Die 七日杀服务器开服联机教程

1、购买后登录服务器&#xff08;百度搜索莱卡云&#xff09;game.lcayun.com 进入控制面板后会出现正在安装的界面&#xff0c;安装时长约5分钟左右 安装成功后你就可以看到我们的控制台界面 复制服务器ip地址打开游戏➡加入游戏 有两种方法加入游戏 第一种方法&#xff1a;…