标签: Redis

  • 解决同一服务器上两个WordPress网站共用Redis导致数据混乱的问题

    解决同一服务器上两个WordPress网站共用Redis导致数据混乱的问题

    Redis采用单线程模型处理客户端请求,这种设计避免了多线程环境下的锁竞争和上下文切换开销。通过I/O多路复用技术,Redis能够高效处理大量并发连接,在内存操作的基础上实现了极高的吞吐量。通常我们在WORDPRESS时,安装“Redis Object Cache”​ 插件的同时,也必须在服务器上安装一个REDIS的服务组件。在WordPress后台的“设置”中,找到该插件的页面,点击“Enable”按钮。如果连接成功,会显示“Connected”状态。这样才算成功启用。服务器上的Redis为WordPress提供了一个高性能的内存缓存后端,而像“Redis Object Cache”这样的插件则充当了连接两者的桥梁。这种结合通过将频繁访问的数据存储在内存中,从根本上减少了数据库查询,是提升中大型WordPress网站性能和扩展性的标准且至关重要的优化手段

    如果您在同一个服务器(例如同一台VPS或云服务器)上运行了两个独立的WordPress网站,并且都为它们配置了Redis对象缓存以提升性能,那么很可能会遇到一个棘手的问题:两个网站的数据出现了“串门”。具体表现为,访问A网站却显示了B网站的文章、页面或菜单,甚至无法正常登录后台。所以同一服务器上的多个WordPress站点连接同一个Redis实例,必须进行隔离。方法就是通过设置唯一的WP_CACHE_KEY_SALT(缓存键盐)或使用不同的WP_REDIS_DATABASE编号。这相当于给每个网站的数据贴上不同的“标签”或放进不同的“房间”。

    问题根源:这个问题的根本原因在于,默认情况下,两个WordPress网站在连接Redis时,使用的缓存键(Key)前缀和数据库编号是相同的。这就好比两个租客(网站A和B)被分配到了同一个房间(Redis数据库),并且他们的物品(缓存数据)都直接堆在房间的公共区域,没有贴名字标签。当其中一位租客想找自己的东西时,很容易就错拿了另一位租客的。Redis无法区分这些数据属于哪个网站,从而导致数据混乱。下图清晰地展示了问题根源与核心解决方案:

    接下来,我们将通过三个步骤,为您的两个网站在Redis中划定清晰的“界限”,彻底解决数据混乱问题。

    解决方法

    请按照以下步骤,分别对两个WordPress网站进行操作。

    1. 设置唯一的Redis缓存前缀

    这是最关键的一步。缓存前缀就像是给每个网站的数据贴上专属“标签”,从而在Redis中区分开来。

    • 操作:​ 分别打开两个WordPress网站根目录下的 wp-config.php文件。
    • 位置:​ 在 /* 好了!请停止编辑。愉快的发布。 */这行代码之前添加。
    • 代码示例:

    第一个网站(Site A)的配置:

    // 为第一个网站设置唯一的前缀,例如 'my_site_a_'
    define('WP_CACHE_KEY_SALT', 'my_site_a_');

    第二个网站(Site B)的配置:

    // 为第二个网站设置一个不同的唯一前缀,例如 'my_site_b_'
    define('WP_CACHE_KEY_SALT', 'my_site_b_');

    注意:​ 请务必将 'my_site_a_'和 'my_site_b_'替换为您自己喜欢的、有区分度的字符串。


    2. 指定不同的Redis数据库编号

    Redis服务默认支持多个数据库(编号从0到15)。我们可以利用这一点,将两个网站的数据存放在不同的“房间”里。

    • 操作:​ 同样在各自的 wp-config.php文件中添加配置。
    • 代码示例:

    第一个网站(Site A)的配置:

    // 指定使用0号数据库
    define('WP_REDIS_DATABASE', 0);

    第二个网站(Site B)的配置:

    // 指定使用1号数据库
    define('WP_REDIS_DATABASE', 1);

    注意:​ 确保两个站点使用的数据库编号不同,且在Redis服务允许的范围内(通常是0-15)。


    3. 检查并重置Redis Object Cache插件

    在修改了配置文件后,需要让缓存插件重新加载配置,以建立新的、隔离的连接。

    1. 分别登录两个WordPress网站的后台管理界面。
    2. 进入 “插件”​ -> “已安装插件”
    3. 找到您正在使用的 “Redis Object Cache”​ 插件。
    4. 禁用该插件,然后再次启用它。
    5. 启用后,检查插件状态页面,确认显示“Connected”(已连接)。这表示插件已经根据新的配置成功连接到了Redis。

    清理旧缓存:​ 在完成上述设置后,为了彻底清除之前残留的混乱缓存数据,最好能清空一次Redis服务器。您可以在服务器命令行执行 redis-cli flushall命令(注意:此操作会清空Redis中的所有数据,如果服务器上还有其他应用在使用Redis,请谨慎操作)。完成所有配置后,请分别访问两个网站的前台和后台,检查显示和功能是否正常。在一个网站发布新内容或更新设置,确认另一个网站不会受到任何影响。

    通过以上三步操作,您就可以完美解决两个WordPress网站因共用Redis而引发的数据混乱问题,让它们既能享受Redis带来的高速体验,又能保持数据独立,互不干扰。


    优化前奏:LeePoet针对2H2G服务器性能优化LNMP+Redis配置详解

  • LeePoet针对2H2G服务器性能优化LNMP+Redis配置详解

    LeePoet针对2H2G服务器性能优化LNMP+Redis配置详解

    前几天因为把数据库给搞崩溃了,气恼之下直接重装了服务器。由于年纪大了,平时搞的东西也多,导致很多时候做完的事,一些数据参数以及作用都要临时再查询并设置,为了方便以后更换服务器不再花费大量时间优化配置,所以LeePoet做了一个记笔,也算是备份。以下是LeePoet一直以来LeePoet BLOG都是用的2H2G的配置。自己是怎么优化服务器的。

    作为一名“资深二手垃圾收藏家废物站长”,LeePoet深知2核2G(2H2G)配置的服务器是许多个人站长的首选。它成本低廉,但资源有限,尤其在面对突发流量或不当配置时,数据库崩溃、网站卡顿是家常便饭。2GB内存是主要限制。所有优化都必须围绕“节约内存、防止溢出”展开。盲目追求高并发参数(如MySQL的max_connections)是导致服务器崩溃最常见的原因。

    LeePoet在多次重装服务器后,总结出的一套针对 宝塔面板 + LNMP(Linux, Nginx, MySQL, PHP)环境 + Redis​ 的深度优化配置。目标明确:在保证稳定性的前提下,最大化榨取2H2G服务器的每一分性能。

    一、服务器的NGINX优化

    在保证服务器稳定性的前提下,最大化利用您有限的硬件资源(2核CPU,2GB内存),以支持更高的并发连接和更大的文件上传。

    核心配置参数分析与建议

    可以直接参照此表在您的管理面板中进行修改。

    配置参数默认值2H2G服务器推荐值说明
    worker_processesautoauto或 2Nginx工作进程数。auto会自动设置为CPU核数,对于2核服务器,设为2auto都是最佳选择。
    worker_connections5120020480【重要调整】​ 每个工作进程的最大连接数。图片中的51200对2G内存来说过高,容易导致内存耗尽。建议保守设置为20480,理论最大并发为 worker_processes * worker_connections = 2 * 20480 = 40960,这已经非常充足。
    keepalive_timeout6030 - 60长连接超时时间。60秒是合理的,可以减少连接重建开销。如果您的站点并发很高,可以适当调低至30秒以快速释放连接。
    client_max_body_size50 MB根据需求调整(如200M)【您最可能需要的调整】​ 允许客户端上传的最大文件大小。如果您需要上传大于50MB的文件(如高清图片、视频、软件包),就在这里修改。例如设为200M注意:修改后必须点击“保存”并重载Nginx配置才能生效。
    gzip开启开启开启Gzip压缩可以有效减少文本类资源(HTML,CSS,JS)的传输大小,提升加载速度。
    gzip_min_length1 KB1 KB小于1KB的文件压缩可能得不偿失,保持默认即可。
    gzip_comp_level53 - 5压缩级别(1-9),级别越高压缩率越好但CPU消耗越大。建议在3-5之间取得平衡,5是很好的选择。
    server_names_hash_bucket_size512512如果您的服务器配置了大量域名,出现哈希桶大小错误时才需要调整这个值。通常默认或512足够。
    client_header_buffer_size32 KB32 KB用于读取客户端请求头的缓冲区大小。对于绝大多数情况够用,保持默认。
    client_body_buffer_size512 KB512 KB用于读取客户端请求主体(如POST数据)的缓冲区大小。通常够用,保持默认。如果经常有超大POST请求,可考虑增大。

    针对2H2G服务器的综合配置策略

    1. 核心思路:平衡内存与并发
      • 内存是您的瓶颈:2GB内存需要精打细算。过高的worker_connections会预分配资源,可能导致服务器在真正的高并发下因内存不足而崩溃。因此,我们将worker_connections从51200下调到更安全的20480
      • CPU足够应对:2个CPU核心可以很好地处理Nginx的两个工作进程。
    2. 重点调整步骤:
      • 第一步(关键):将 client_max_body_size修改为您需要的值(例如 200M)。
      • 第二步(推荐):将 worker_connections修改为 20480,以提升服务器稳定性。
      • 第三步:检查其他参数,确认与推荐值一致。
      • 最后:滚动到页面底部,点击绿色的 “保存”​ 按钮,并重启Nginx服务或重载配置以使更改生效。

    二、服务器的MYSQL优化

    对于2G内存的服务器来说(如最大连接数500)过于激进,存在耗尽内存导致数据库崩溃的高风险。我们的优化目标是:在有限的内存下,优先保证数据库的稳定性和响应速度,而不是追求不切实际的高并发连接数

    核心优化思路

    1. 内存是最大瓶颈:2GB内存中,操作系统和其他服务(如Nginx、PHP)需要占用约300-500MB。留给MySQL的安全内存上限应在 1.2GB ~ 1.5GB​ 左右。
    2. 连接数是内存杀手:许多缓冲区(如sort_buffer_size)是“按连接”分配的。即使一个空闲连接,也会占用这些内存。500个连接会瞬间吃光内存。
    3. 抓住重点innodb_buffer_pool_size是MySQL性能的“心脏”,它用于缓存数据和索引,应分配最多内存。

    2H2G服务器MySQL配置推荐

    配置的详细优化建议,可以直接在管理面板中修改。

    配置参数默认值2H2G服务器推荐值修改说明
    最大使用内存~1348 MB约 1200 – 1400 MB这是计算结果,无需直接设置。它由下面各个参数值累加而来。我们的目标就是将其控制在安全线内。
    max_connections500100【最关键调整】​ 大幅降低最大连接数。100个连接对中小型网站已足够。这能有效防止内存过载。实际并发连接数可能只有10-30个。
    innodb_buffer_pool_size128 MB768 M​ 或 1024 M【性能核心】​ 这是缓存数据和索引的地方,越大查询越快。建议分配总可用内存的50-70%。从128MB提升到768MB或1G,性能将有质的飞跃。
    key_buffer_size32 MB16 M仅用于MyISAM引擎的索引缓存。如果您的表都是InnoDB引擎(现代MySQL的默认引擎),这个值可以设小,比如16M。
    tmp_table_size32 MB16 M临时表的最大大小。如果复杂查询多,可以保持32M,否则可以适当降低以节省内存。
    innodb_log_buffer_size16 MB8 M– 16 M用于缓冲重做日志(Redo Log)数据。16MB对一般业务足够,如果大事务不多,可以设为8MB。
    table_open_cache128512– 1024表示可以同时打开的表的数量。适当增大(如512)可以减少表开关销,对内存影响不大。
    thread_cache_size1616– 32缓存线程数量,避免频繁创建销毁线程。16是一个合理的值,可以保持。

    【重点】按连接分配的缓冲区优化

    这些参数是“内存杀手”,必须谨慎设置。它们乘以可能的并发连接数就是总消耗。

    配置参数默认值2H2G服务器推荐值修改说明
    sort_buffer_size768 KB256 KB每个连接排序时使用的缓冲区。不要超过256KB。
    read_buffer_size768 KB128 KB– 256 KB每个连接顺序扫描表时使用的缓冲区。降低到256KB或更低。
    read_rnd_buffer_size256 KB128 KB每个连接用于随机读的缓冲区。128KB足够。
    join_buffer_size256 KB128 KB每个连接用于表关联的缓冲区。128KB足够。如果查询优化得当,很少需要大的join buffer。
    thread_stack256 KB256 KB每个线程的堆栈大小。保持默认即可,不要动。
    binlog_cache_size32 KB32 KB每个连接用于二进制日志的缓存。保持默认即可。

    修改后内存估算(理想情况)

    估算一下推荐配置下的内存使用峰值:

    • 全局缓冲区:
      • innodb_buffer_pool_size: 768 MB
      • key_buffer_size: 16 MB
      • tmp_table_size& 其他: ~50 MB
      • 小计: ~834 MB
    • 每连接缓冲区​ (按最大100连接,但实际可能只有20个活跃连接计算):
      • (256K256K128K128K) * 20个连接 ≈ (768KB/连接) * 20 = 15 MB
    • 操作系统/其他开销: ~200 MB
    • 总计峰值: 834 MB + 15 MB + 200 MB ≈ 1050 MB

    这个估算值在您2GB内存的安全范围内,系统运行会非常稳定。

    操作步骤

    1. 备份:如果数据库中有重要数据,修改配置前最好先备份。
    2. 修改:在您的管理面板中,按照上表的“推荐值”逐一修改。
    3. 保存并重启:滚动到页面底部,点击绿色的 “保存”​ 按钮,然后点击 “重启数据库”​ 使配置生效。
    4. 监控:重启后,通过数据库管理工具或SHOW GLOBAL STATUS LIKE 'Threads_connected';命令监控实际的最大连接数,通常远低于max_connections

    对于2H2G服务器,MySQL配置的精髓就是“保守”。通过大幅降低 max_connections并优化每个连接的缓冲区大小,将节省下来的内存集中分配给 innodb_buffer_pool_size,这样才能在有限资源下获得最佳性能。


    三、Redis配置与优化

    对于2G内存的服务器来说(如maxclients 10000风险极高,我们的目标是:在有限的内存下,确保Redis稳定运行,防止内存耗尽导致服务崩溃,并保障安全

    核心优化思路

    1. 内存是生命线:Redis所有数据存储在内存中。必须设置内存上限,否则Redis会吃光所有内存,导致系统崩溃。
    2. 连接数不是重点:与MySQL不同,Redis是单线程模型,处理连接非常高效。但每个连接仍会占用少量内存,无需设置得过高。
    3. 安全第一:默认只绑定内网(127.0.0.1)并设置强密码,是防止服务器被入侵的关键。

    下表是针对默认值的配置的详细优化建议。

    配置参数默认值2H2G服务器推荐值修改说明
    bind127.0.0.1127.0.0.1【安全关键】​ 保持默认。这意味着Redis只允许本机(即服务器上的PHP、Web应用)连接。绝对不要改为 0.0.0.0(允许任何IP连接),否则极易被黑客入侵。
    port63796379​ 或 自定义端口保持默认即可。如果为了隐蔽性,可以改为其他端口(如 6479),但这并非主要安全手段。
    timeout0300客户端空闲超时时间(秒)。0表示不断开。建议设为 300(5分钟),自动断开闲置连接,释放资源。
    maxclients100001000【重要调整】​ 最大客户端连接数。10000对2G服务器过高,可能占用几百MB内存。设置为 1000对于绝大多数应用绰绰有余,能有效控制内存使用。
    databases1616数据库数量。16是合理的默认值,无需修改。
    requirepass【必须设置一个强密码】【安全关键】​ 这是保护Redis的第二道防线。请务必设置一个包含大小写字母、数字和特殊字符的复杂密码(例如 MyRedisPass123!)。应用程序连接Redis时也需要使用此密码。
    maxmemory01024 MB​ 或 1536 MB【最核心的调整】​ 0表示无限制,这是极其危险的!必须设置为一个上限。建议为系统预留500MB-1GB内存,因此Redis最大内存可设为 1024M(1GB)。如果您的应用主要是Redis,可以设为 1536M(1.5GB)

    【关键】maxmemory-policy配置(至关重要!)

    当内存使用达到 maxmemory限制时,Redis的行为由 maxmemory-policy决定。您需要在配置文件中找到并设置它。对于通用场景,推荐:

    • allkeys-lru(推荐)​ 从所有键中淘汰最近最少使用的键。这是最常用的策略,能保证热点数据常驻内存。
    • volatile-lru:仅从设置了过期时间的键中淘汰最近最少使用的键。

    需要在配置文件(通常位于 /etc/redis/redis.conf)中手动添加或修改这一行:

    maxmemory-policy allkeys-lru

    针对2H2G服务器的完整配置方案

    1. 第一步(安全与稳定核心)
      • 将 maxmemory​ 设置为 1024M
      • 在 requirepass​ 中设置一个强密码
    2. 第二步(资源优化)
      • 将 maxclients​ 从 10000修改为 1000
      • 将 timeout​ 从 0修改为 300
    3. 第三步(高级策略,需手动修改配置文件)
      • 使用SSH登录服务器,用文本编辑器(如 nano或 vim)打开Redis配置文件(路径可能为 /etc/redis/redis.conf)。
      • 找到并修改(或添加)一行:maxmemory-policy allkeys-lru
      • 保存文件并退出编辑器。
    4. 最后
      • 在宝塔面板的Redis设置页面,点击绿色的 “保存”​ 按钮。
      • 重要:根据页面提示,重启Redis服务​ 以使所有配置生效。

    注意事项

    • 重启影响:重启Redis会清空所有当前存储在内存中的数据(如果未开启持久化)。请在业务低峰期操作。
    • 持久化:如果您需要数据持久化,请确保配置了RDB快照或AOF日志。宝塔面板通常默认已配置,但建议您检查“性能调整”或配置文件中的 save和 appendonly相关设置。
    • 监控:配置完成后,通过宝塔面板的“监控”功能或Redis自带的 INFO命令,观察内存使用情况是否稳定。

    对于2H2G服务器,Redis配置的核心就三点:

    1)用 maxmemory设限保命;

    2)用 bind和 requirepass筑牢安全防线;

    3)用 maxclients等参数优化资源。

    按照以上方案配置,您的Redis服务将能在一个安全、稳定的环境下运行。

    后续

    因为在设置完redis密码后,WP会报错,是因为我们WP也装了redis插件如:

    所以在修改完redis后再打开站点会出现一个报错

    解决方法

    我们直接找到站点的wp-config.php文件,编辑WordPress根目录下的 wp-config.php文件再添加一段redis配置:

    // 在wp-config.php中添加或修改以下配置
    define('WP_REDIS_HOST', '127.0.0.1');
    define('WP_REDIS_PORT', 6379);
    define('WP_REDIS_PASSWORD', 'your_redis_password_here'); // 这里是redis的密码
    define('WP_REDIS_TIMEOUT', 1);
    define('WP_REDIS_READ_TIMEOUT', 1);

    四、配置PHP

    在内存紧张的情况下,优先保证服务器稳定性,按需分配资源。

    【最佳推荐方案:切换到“按需模式”(ondemand)】

    这是最节省内存的方案,非常适合访问量不大或波动明显的站点。

    配置参数默认值(动态)2H2G推荐值(按需)说明
    运行模式 (pm)dynamic(动态)ondemand(按需)【关键修改】​ 此模式下,PHP进程在无请求时会自动结束,仅在需要时创建,能极大节省内存。
    max_children2015即使切换到按需模式,也需要设置一个上限防止爆内存。15是2G内存下相对安全的数值。
    start_servers5(此模式无效)按需模式无需设置起始进程数。
    min_spare_servers5(此模式无效)按需模式不保持空闲进程。
    max_spare_servers10(此模式无效)按需模式不保持空闲进程。
    pm.process_idle_timeout60s(或默认值)进程空闲多少秒后关闭。保持默认或设为60秒即可。

    此方案优点:在网站无人访问时,PHP进程数为0,内存占用极低。当有访问时,系统会快速创建进程处理请求,处理完毕后一段时间会自动回收。

    1. 强烈建议您采用【最佳推荐方案】
    2. 在这个“性能调整”界面,将 “运行模式”​ 从 “动态”​ 改为 “按需”
    3. 将下方的 “max_children”​ 从20修改为 15
    4. 点击绿色的 “保存”​ 按钮。
    5. 最重要的一步:需要到宝塔的“软件商店”或“服务”页面,找到PHP-8.2,点击“重启”。不重启配置不会生效!

    2H2G服务器,PHP-FPM进程管理是内存优化的重中之重。将模式从“动态”改为“按需”,并设置一个合理的max_children(如15),可以确保服务器在承受访问压力时不会因PHP进程过多而内存耗尽崩溃。这是提升服务器稳定性的最有效手段。

    以下是PHP的 FPM主配置文件已经是最优配置

    配置分析与评价

    配置行默认值分析与评价
    pmondemand【核心优化,非常正确!】​ 这是最省内存的模式。进程只有在有请求时才会创建,请求处理完后会自动结束。完美契合2G内存服务器。
    pm.max_children15【设置合理】​ 这是PHP进程数的上限。15对于您的服务器内存来说是安全且可承受的,防止进程过多导致内存耗尽。
    pm.start_servers5(此模式下无效)​ 在ondemand模式下,系统启动时不会预先创建5个进程,所以这个值没有影响,可以忽略。
    pm.min_spare_servers5(此模式下无效)​ 在ondemand模式下,系统不保持任何空闲进程,所以这个值没有影响,可以忽略。
    pm.max_spare_servers10(此模式下无效)​ 同上,在ondemand模式下无效。
    listen.backlog8192监听队列长度,默认值,足够大,没问题。
    request_terminate_timeout100【设置合理】​ 单个请求最大执行时间100秒,比php.ini里的max_execution_time更长,确保FPM能强制结束超时进程,避免进程阻塞。
    listen.mode0600Socket文件权限,仅允许所有者读写,安全。

    将PHP-FPM设置成了对小型服务器最友好的 “按需模式 (ondemand)”,并设置了安全的进程上限 15。这能确保:

    1. 低内存占用:在网站访问低谷期,PHP进程数为0,几乎不占用额外内存。
    2. 高稳定性:进程数有硬性上限,不会因为突发流量而拖垮整个服务器。
    3. 按需响应:当有访问请求时,系统会立刻创建新的进程来处理,响应速度不受影响。

    确认修改后,点击界面下方的绿色 “保存”​ 按钮,然后到宝塔的“服务”页面,重启PHP-8.2服务,使新的配置生效。

    安装PHP的OPcache 扩展

    安装并启用OPcache是提升PHP性能性价比最高的操作,没有之一。

    检查并优化OPcache配置

    仅仅安装还不够,我们需要确保它的配置对于您的2G内存服务器是优化的。请您按照以下步骤操作:

    1. 点击左侧菜单的【配置修改】,打开PHP的主配置文件(php.ini)。
    2. 在文件中找到 [opcache]部分。如果找不到,可以直接在文件末尾添加。
    3. 请对照下表,检查或修改您的OPcache配置,使其达到最佳状态:
    配置项推荐值(用于2H2G服务器)说明
    opcache.enable1确保OPcache是开启状态。
    opcache.memory_consumption128【核心参数】​ 为OPcache分配的内存量(MB)。默认值可能很小(如64)。建议设置为128,这能为大量PHP脚本提供缓存空间,显著提升性能,同时不会对您2G的总内存造成压力。
    opcache.interned_strings_buffer8存储 interned strings 的内存大小(MB)。PHP会重复使用相同的字符串,这个配置能节省内存。从默认值提升到 8效果很好。
    opcache.max_accelerated_files10000OPcache哈希表中可存储的脚本文件数量上限。建议设为10000,以确保所有项目文件都能被缓存。
    opcache.revalidate_freq60检查脚本是否更新的时间间隔(秒)。设为 60意味着OPcache会每60秒检查一次源文件是否有变化。在生产环境,为了最高性能,甚至可以设为 0,但这样需要手动重启PHP来更新更改。
    opcache.save_comments1保留代码注释。某些框架(如Laravel)依赖注释,请保持为1。
    opcache.enable_cli0是否为命令行接口(CLI)启用OPcache。通常不需要,设为 0以避免潜在问题。

    优化的配置示例(复制粘贴到 php.ini中):

    opcache.enable = 1
    opcache.memory_consumption=128
    opcache.interned_strings_buffer=8
    opcache.max_accelerated_files=10000
    opcache.revalidate_freq=60
    opcache.fast_shutdown=1
    opcache.enable_cli=0

    配置中的 opcache.jit_buffer_size和 opcache.jit是PHP 8.0+的即时编译功能,属于高级优化。如果OPcache工作正常,可以保留它们。但如果重启PHP后网站出现任何问题,可以暂时将这两行开头加上分号;注释掉,先确保基础OPcache能正常运行。

    修改完成后,点击保存最重要的一步:回到【服务】页面,重启PHP(点击对应的重启按钮)。不重启,配置更改不会生效。


    设置计划任务,每日凌晨重启服务

    “宝塔任务管理器”主要用于实时监控和管理进程,而设置定时任务需要用到宝塔面板自带的“计划任务”功能。操作步骤如下:

    1. 在宝塔面板左侧导航栏中,找到并点击 “计划任务”
    2. 点击页面右上角的 “添加计划任务”​ 按钮。
    3. 在弹出的窗口中,按以下说明进行配置:
      • 任务类型:选择 “Shell脚本”
      • 任务名称:填写一个便于识别的名称,例如 “每日凌晨重启PHP和MySQL”
      • 执行周期:选择 “每天”,并在时间设置中选择一个凌晨的、访问量最少的时间点,例如 凌晨 3:00
      • 脚本内容:这是最关键的部分,请将以下命令复制粘贴进去:
    # 重启PHP-FPM服务(请根据您的PHP版本修改,例如php-fpm-82)
    /etc/init.d/php-fpm restart
    # 重启MySQL服务
    /etc/init.d/mysqld restart

    1. 在任务列表中,找到您刚刚创建的任务,点击右侧的 “执行”​ 按钮。
    2. 注意:请根据您服务器上安装的PHP版本,将 php-fpm替换为正确的服务名。通常格式为 php-fpm-版本号,例如 php-fpm-82(对应PHP 8.2)。您可以在宝塔的“软件商店”中查看已安装的PHP版本,或者在“服务”页面查看PHP服务的全名。
    3. 确认信息无误后,点击 “添加任务”

    成功设置了在每天凌晨自动重启PHP和MySQL服务的计划任务。这有助于释放被长时间占用的内存,清理可能存在的内存泄漏,从而保持服务器的稳定性和性能。对于您这台2H2G的服务器来说,这是一个非常有效的维护手段。


    额外说明:为什么没有装Memcached?

    1.服务器内存只有2GB,非常宝贵。同时运行Redis和Memcached两个内存型服务,意味着需要为两者分别分配内存(比如Redis 1GB,Memcached 128MB)。这会造成内存资源的浪费和碎片化。将分配给Memcached的这部分内存也划给Redis,让Redis拥有更大的缓存空间,性能会更好。

    “把好钢用在刀刃上”:集中所有内存资源给一个更强大的缓存服务(Redis),比分散给两个服务更高效。

    2.Redis的功能是Memcached的超集

    •Redis支持数据持久化,可以定期将内存数据写入磁盘,防止服务器重启后所有缓存丢失。而Memcached不支持持久化,重启后缓存就全没了。

    Memcached只能做简单的键值对缓存,如图中的配置,它就是一个纯内存缓存。

    Redis不仅可以做键值对缓存,还支持更丰富的数据结构(如列表、集合、哈希表、有序集合),这使得它能处理更复杂的场景(如排行榜、消息队列、会话存储等)。

    2H2G服务器,保留Redis,停用Memcached是一个更优、更专业的选择。​ 这能让有限的硬件资源发挥出最大的效能,同时获得更强大的功能。


    优化进阶:解决同一服务器上两个WordPress网站共用Redis导致数据混乱的问题