AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 780179
Accepted
Rotem
Rotem
Asked: 2016-06-01 22:01:33 +0800 CST2016-06-01 22:01:33 +0800 CST 2016-06-01 22:01:33 +0800 CST

将 mySQL 服务器与 LAMP 分离和性能下降

  • 772

我目前正在为我们的网站使用 LAMP 堆栈(超过 Centos 6.5),并且我想尝试将 mySQL 与“Web 服务器”分开。

到目前为止,我一直在使用 DigitalOcean 的四核 CPU 和 8GB RAM 的 VPS。
昨天,我为单个登台环境(目前)创建了一个新的 DigitalOcean VPS,具有以下规格和实用程序:

  • 2个CPU核心
  • 2GB 内存
  • Centos 6.7
  • 带有“网络服务器”的专用网络(Ping 时间:min/avg/max/mdev = 0.352/0.481/0.662/0.073 ms
  • mySQL 5.6(与当前服务器上的相同)
  • 相同的 my.cnf 配置有 2 处更改:
    1. 补充:(bind-address=X.X.X.X私网内网IP地址)
    2. 将 innodb_buffer_pool_size 从 2GB 更改为 1GB(因为我们现在的 RAM 更少了..)

Web 服务器运行 Drupal 站点,并安装了 APCu、opCACHE 和 memcached。

使用 Chrome 检查加载时间时,似乎该网站现在加载速度较慢,大约需要 0.5 - 1.5 秒。不幸的是,NewRelic 证明我是对的(见附件截图)

在此处输入图像描述

由于这是我第一次配置远程 mySQL 服务器,我想知道这是否是我错过的东西?任何可以提高性能的配置或调整?

mysql lamp
  • 3 3 个回答
  • 1072 Views

3 个回答

  • Voted
  1. Julie Pelletier
    2016-06-01T22:09:28+08:002016-06-01T22:09:28+08:00

    我不知道您为什么会感到惊讶,因为您的 MySQL 服务器分配给它的 RAM 较少,并且将它放在不同的机器上会增加网络接口的负载。

    您应该监控您的网络活动,看看它是否会导致任何类型的瓶颈。

    根据您的 SQL 查询和 PHP 脚本,可能有一些方法可以在查询性能方面更好地优化这些任务,并改进发送回 PHP 的结果以减少网络负载。

    • 1
  2. Shahriar Shojib
    2016-06-06T19:14:26+08:002016-06-06T19:14:26+08:00

    我会推荐几件事:
    验证网站是否使用 Memcached/APC/opcode 缓存。
    我会推荐 Memcached 用于数据库查询缓存。使用mysqltuner.pl对 Mysql 配置进行一些调整


    优化 memcached apc 配置
    Memcached 配置文件在基于 Debian/Ubuntu 的操作系统中的位置:

    /etc/memcached.conf

    基于 Centos/RHEL 的操作系统中的 Memcached 配置文件:

    /etc/sysconfig/memcached

    Apc 配置可以插入到 php.ini 中。

    遵循这些步骤肯定会提高性能。
    并使用 NewRelic APM 揭示有关时间花费的数据。
    如果网络是一个问题,我想你无能为力。
    让我知道。
    谢谢,
    沙赫里亚尔

    • 1
  3. Best Answer
    Rotem
    2016-06-08T01:19:51+08:002016-06-08T01:19:51+08:00

    我设法解决了这个问题,我认为我所经历的方式可能对其他人有所帮助。

    • 检查使用的服务器之间的延迟ping,mtr并traceroute找出问题是否与延迟有关
    • 检查服务器的负载和空闲 RAM,使用top(或htop) 和free -m
    • 在两个 mysql 服务器(旧的本地和新的远程)上运行大量查询并比较查询时间,我们也可以使用 mySQL 的分析 - 见SHOW PROFILE
    • 假设 mysql 查询时间相似(或至少几乎相似),那么我们可以使用 PHP 片段来运行相同的代码,看看瓶颈可能与 PHP 相关 - 我建议使用NewRelic PHP 应用程序分析- 在我的情况下,这是“启示”,因为最终我发现问题甚至与远程 mySQL 无关,但是额外的 0.5-1.5 秒是由对第 3 方服务的额外调用引起的(仅在使用远程数据库时..)
    • 使用mysqltuner.pl(如@Shahriar Shojib 建议的那样),并查找是否有一些我们必须进行的 mySQL 配置调整(在我的情况下没有..)
    • 尝试禁用 iptables 或任何其他防火墙
    • 检查网络流量(我使用iptraf和我们的第 3 方监控服务),但还有一些其他选项,正如 @Julie Pelletier 所建议的那样

    使用远程 mySQL 服务器时的额外性能提升

    • 使用 memcached、APCu 和 Opcode 缓存(尽管所有这些都已经安装在我们的案例中 - 它们是游戏规则的改变者......)

    • 最后但并非最不重要 - 使用 SSH 隧道而不是直接连接到 mySQL 服务器(似乎它在整个页面加载时间上节省了大约 200 毫秒)

    希望阅读此答案将为您节省超过 0.5 到 1.5 秒 :)

    • 0

相关问题

  • 开源与专有关系 db mgt 系统的优缺点是什么?

  • 在 solaris 10 上为 mysql 设置 max_allowed_pa​​cket

  • 如何移动 MySQL 的数据目录?

  • 通过 VPN 连接什么是远程服务器 IP?

  • mysql崩溃

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve