使用 Memcached 减少 WordPress 网站上的数据库负载

已发表: 2018-11-30
用于 WordPress 的 Memcached
关注@Cloudways

Memcached 是驻留在您的托管服务器上的缓存机制之一。 它主要处理有助于减少数据库负载导致快速加载网页的数据库查询。 如果您的网站/商店严重依赖数据库查询,使用 Memcached for WordPress 网站将显着提高性能并减少页面加载时间。

包括 YouTube、Reddit、Facebook、Twitter 和 Wikipedia 在内的互联网巨头都在使用 Memcached 来提高页面加载时间。 Google App Engine、Microsoft Azure、IBM Bluemix 和 Amazon Web Services 也通过 API 提供 Memcached 服务。

考虑到它在提高页面加载时间方面的重要性,我们 (Cloudways) 在我们的托管 WordPress 托管云服务器上提供预安装的 Memcached。 但是,有时您可能需要配置应用程序 (WordPress) 以充分利用 Memcached。

目录

  1. 什么是内存缓存?
  2. Memcached 有什么用?
  3. Memcached 是如何工作的?
  4. 如何使用 Memcached?
  5. 在服务器上安装 Memcached
  6. 检查 Memcached 是否正在运行
  7. 面向 Cloudways 用户的 Memcached
  8. WordPress Memcached 插件
  9. 最后的想法

什么是内存缓存?

根据 Memcached 官方网站,Memcached 是一个:

“免费和开源、高性能、分布式内存对象缓存系统,本质上是通用的,但旨在通过减轻数据库负载来加速动态 Web 应用程序。

Memcached 是一种内存键值存储,用于存储来自数据库调用、API 调用或页面渲染结果的任意小块数据(字符串、对象)。”

简单来说,Memcached 是一个分布式临时对象缓存系统,它将字符串和对象存储在服务器的 RAM 中,这些对象是处理数据库查询、API 调用或页面渲染产生的。 用于此机制的服务器可以称为 Memcached 服务器。

Memcached 有什么用?

Memcached 用于通过减少数据库负载来加速动态 Web 应用程序,如电子商务商店、注册/登录网站等。 它存储处理后的结果,因此每当访问者再次请求相同的查询时,Memcached 可以响应该查询而不是处理查询和回复。 通过保持服务器不那么繁忙,您的访问者将体验到更快的加载时间和更好的用户体验。

GitHub 上有一个有趣且有趣的真实世界故事,请阅读以了解 Memcached 的典型用例。

您当前的 WordPress 托管是否表现不佳?

迁移到 Cloudways 并最大限度地提高 WordPress 的性能。

立即启动!

Memcached 是如何工作的?

每次访问者/浏览器请求需要数据库处理和响应的服务器时,都会给服务器增加负载。 Memcached 通过将数据对象存储在临时动态内存中来减少负载。 它将数据保存在键值上并在将浏览器的请求发送到数据库之前检查其内存。 如果存在缓存,它会在不涉及要处理的数据库的情况下回复请求。

如上所述,Memcached 是一个分布式内存对象缓存系统,由四个主要组件组成:

  • 客户端软件:接收分布式可用 Memcached 服务器的列表。
  • 基于客户端的哈希算法:根据键值选择服务器。
  • 服务器软件:将数据(值)和键存储到内部哈希表中。
  • 服务器算法:确定何时删除旧数据并重用内存。

上述组件允许 Memcached 存储和检索数据。 每个项目包括一个:

  • 钥匙
  • 到期时间
  • 原始数据

当一个项目被请求时,Memcached 会在回复请求之前验证它的过期时间以查看该项目是否仍然有效。 如果缓存不存在,它会将请求发送到数据库以处理结果并将结果存储为一个项目。

如果服务器内存不足,它会查找并替换过期的项目。 如果它仍然需要任何信息,它会查找特定时间段内未请求的项目。 通过这种方式,Memcached 将更多最近请求的信息保存在动态内存中。

在高级 Memcached 工作如下:

  1. Memcached 检查请求的数据是否存储在缓存中。
  2. 两种可能的输出:
    – 数据存储在缓存中:在不中断数据库的情况下从 Memcached 返回请求的数据。
    – 数据不存储在缓存中:执行请求的查询,处理和检索数据,并将结果保存在内存中。
  3. 每当项目有更新或项目过期时,Memcached 都会更新其缓存并确保将新鲜内容传送到请求的客户端。

如何使用 Memcached?

使用 Memcached 涉及两个步骤。 首先,它必须安装在您的托管服务器上,然后您的应用程序应该能够支持 Memcached。

安装和配置过程描述如下:

在服务器上安装 Memcached

Memcached 不需要很多 CPU 资源。 它完全依赖于 RAM。 如果您有一个 8GB RAM 的 Web 服务器,但操作系统和您的网站只消耗 4GB,那么最好将剩余的 RAM 分配给 Memcached 实例以增加其存储容量。 在此处阅读所有技术要求

Memcached 适用于大多数基于 Linux 的服务器,安装 Memcached 只需两个Linux 命令即可。 通常,您应该从操作系统(Debian、Ubuntu 等)提供的软件包中安装 Memcached。 操作系统将为您解决依赖关系并负责安全更新。

对于 Debian 或 Ubuntu 用户:

命令: apt-get install memcached

对于 Redhat/Fedora:

命令: yum install memcached

有关更多信息,请参阅您各自操作系统的文档。 值得一提的是,最流行的反向代理服务器之一 Nginx 预装了 Memcached 模块,提供了最灵活的 Nginx Memcached 捆绑解决方案。

IdeaBox – 案例研究

阅读 Cloudways 如何帮助 WordPress 机构构建更好的产品。

立即获取案例研究!

谢谢你

您的电子书正在进入您的收件箱。

检查 Memcached 是否正在运行

有多种方法可以测试 Memcached 是否正在运行。 其中之一是使用 Telnet,登录到您的服务器 SSH 终端并编写以下命令:

 远程登录本地主机 11211

或者

远程登录 127.0.0.1 11211

PS:如果本地服务器是您的 Memcached 服务器,则会运行上述命令。

如果上面的命令运行成功,你会得到以下结果:

 连接到本地主机。
转义字符是“^]”。

否则,您将收到连接错误

要检查一些基本统计信息,您可以使用以下命令: stats

你会得到如下内容:

 状态 pid 313
STAT 正常运行时间 2778636
STAT 时间 1535727399
统计版本 1.4.21
STAT libevent 2.0.21-稳定
STAT 指针大小 64
STAT rusage_user 47.119322
STAT rusage_system 48.765342
STAT curr_connections 1
STAT total_connections 151198
STAT 连接结构 3
STAT reserved_fds 20
STAT cmd_get 46
STAT cmd_set 4
STAT cmd_flush 0
状态 cmd_touch 0
STAT get_hits 30
STAT get_misses 16
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
状态 cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 22942
STAT bytes_written 3433252
STAT limit_maxbytes 268435456
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT 线程 4
STAT conn_yields 0
STAT hash_power_level 16
STAT 哈希字节 524288
STAT hash_is_expanding 0
STAT malloc_fails 0
STAT 字节 106
STAT curr_items 1
STAT total_items 4
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT 驱逐 0
STAT 回收 0
STAT crawler_reclaimed 0
STAT lrutail_relocked 0

要检查项目,请使用: stats items

结果:

 STAT 项目:2:数量 1
统计项目:2:年龄 2486
STAT 项目:2:驱逐 0
STAT 项目:2:evicted_nonzero 0
STAT 项目:2:evicted_time 0
STAT 项目:2:内存不足 0
STAT 项目:2:tailrepairs 0
统计项目:2:回收 0
STAT 项目:2:expired_unfetched 0
统计项目:2:evicted_unfetched 0
STAT 项目:2:crawler_reclaimed 0
统计项目:2:lrutail_relocked 0

要检查当前内存统计信息,请写入: stats slices

结果:

 状态 2:块大小 120
状态 2:chunks_per_page 8738
状态 2:total_pages 1
STAT 2:total_chunks 8738
状态 2:used_chunks 1
状态 2:free_chunks 8737
状态 2:free_chunks_end 0
状态 2:mem_requested 106
状态 2:get_hits 30
状态 2:cmd_set 4
状态 2:delete_hits 0
状态 2:incr_hits 0
状态 2:decr_hits 0
状态 2:cas_hits 0
状态 2:cas_badval 0
状态 2:touch_hits 0
STAT active_slabs 1
STAT total_malloced 1048560

要退出连接类型quit并按enter

有一些用于运行和检查 Memcached 服务器的有用命令的列表。

其他平台的 Memcached 教程:

  • 如何在 Magento Store 上设置 Memcached
  • 如何在 PHP 上设置 Memcached
  • 如何在 Joomla 上设置 Memcached
  • 如何使用 Yii 2 设置 Memcached
  • 如何使用 Memcached 设置 PrestaShop
  • 如何在您的 Drupal 7 站点上设置 Memcache

面向 Cloudways 用户的 Memcached

Cloudways 用户不必担心与 WordPress Memcached 相关的所有技术细节。 在 Cloudways 平台上启动的所有服务器都预先安装并激活了 Memcached。

导航到您各自的服务器 → 管理服务,您可以看到Memcached已预先安装并默认激活。

Memcached WordPress

不是 Cloudways 客户但想要利用 Memcached? 无需提供信用卡详细信息即可免费试用。

WordPress Memcached 插件

市场上有很多 WordPress 缓存插件可用。 它们中的大多数都像 W3TC 一样支持 Memcached,它是使用最广泛的缓存插件之一,允许您配置 Memcached。 如果您是 W3TC 用户之一,请导航到“常规设置”选项卡并从下拉列表中选择 Memcached,其中显示:

  • 页面缓存
  • 缩小缓存
  • 数据库缓存

W3TC WordPress Memcached

保存所有设置,不要忘记清除缓存一次。

最后的想法

Memcached 被认为是加速 WordPress 站点的方法之一,如果配置正确,因为它减少了数据库负载并保持服务器不那么繁忙,从而获得更好的性能和页面加载时间。