我的 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,一经查实,立即删除!

相关文章

LLM量化

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

语言:C#

一、VSCode生成exe 二、

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

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

SQLite .journal 文件

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

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

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

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

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

Java 守护线程 ( Daemon Thread )详解

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

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

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

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

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

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

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

三. TensorRT基础入门-导出并分析ONNX

目录 前言0. 简述1. generate-onnx2. export-onnx3. 补充-ONNX3.1 概念3.2 组成 总结参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》,链接。记录下个人学习笔记,仅供自己参考 本次课程我们来学习课程第三章—TensorRT 基础入门&#xff0…

redis深入理解之实战

1、SpringBoot整合redis 1.1 导入相关依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId&g…

纯CSS实现步骤条

纯CSS实现纵向Steps步骤条效果 效果图 实现思路 步骤条是一种用于引导用户按照特定流程完成任务的导航条&#xff0c;在各种分步表单交互场景中广泛应用。步骤条通常由编号、名称和引导线三个基本要素组成。本文中要实现的是一个简单的步骤条&#xff0c;包含上述三个基本要素…

SpringBoot结合Canal 实现数据同步

1、Canal介绍 Canal 指的是阿里巴巴开源的数据同步工具&#xff0c;用于数据库的实时增量数据订阅和消费。它可以针对 MySQL、MariaDB、Percona、阿里云RDS、Gtid模式下的异构数据同步等情况进行实时增量数据同步。 当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.…

计算机网络技术主要学什么内容,有哪些课程

计算机网络技术专业是一个涉及理论与实践紧密结合的学科&#xff0c;主要学习内容有计算机网络基础、网络设备技术、网络编程等内容&#xff0c;以下是上大学网&#xff08;www.sdaxue.com&#xff09;整理的计算机网络技术主要学什么内容&#xff0c;供大家参考&#xff01; 基…

20.接口自动化-Git

1、Git和SVN–版本控制系统 远程服务出问题后&#xff0c;可以先提交commit到本地仓库&#xff0c;之后再提交push远程仓库 git有clone Git环境组成部分 常用Git代码仓库服务-远程仓库 GitHub-服务器在国外&#xff0c;慢 GitLab-开源&#xff0c;可以在自己服务器搭建&…

根据docker部署nginx并且实现https

目录 一、Docker中启用HTTPS有几个重要的原因 二、https介绍 三、https过程 四、安装docker-20.10.18 五、如何获取证书 通过阿里云获取证书 六、docker部署nginx并且实现https 6.1准备证书 6.2准备nginx.conf 和 index.html文件 6.3生成容器 6.4浏览器验证证书 一、…

ssm120基于SSM框架的金鱼销售平台的开发和实现+jsp

金鱼销售平台 摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于金鱼销售平台当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了金鱼销售平台&#xff0c;它彻底改…

栈与队列的实现

前言 本次博客将要实现一下栈和队列&#xff0c;好吧 他们两个既可以使用动态数组也可以使用链表来实现 本次会有详细的讲解 栈的实现 栈的基础知识 什么是栈呢&#xff1f; 栈的性质是后进先出 来画个图来理解 当然可不可以出一个进一个呢&#xff0c;当然可以了 比如…

Vue路由开启步骤

1.在控制台输入命令 //控制台下载安装npm add vue-router3.6.5 2.在main.js下导入并注册组件 import Vue from vue import App from ./App.vue//控制台下载安装npm add vue-router3.6.5 //导入 import VueRouter from "vue-router";//注册 Vue.use(VueRouter) con…