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 / 问题 / 639838
Accepted
CaptSaltyJack
CaptSaltyJack
Asked: 2014-10-27 17:28:49 +0800 CST2014-10-27 17:28:49 +0800 CST 2014-10-27 17:28:49 +0800 CST

如何调整网络服务器并为大量同时访问者做好准备?

  • 772

我有另一个相关的问题,但我偏离了它,因为我正在更改我的服务器以使用 nginx 而不是 Apache。

相关:服务器问题,内存不足,平均负载很高

我仍然遇到问题,尽管它们现在更容易定位。这是我能提供的尽可能详细的情况:

我妻子有一个 WordPress 网站,里面有很多插件,包括 WooCommerce。即使只有我们两个人不停地上网(我打开了两个浏览器,她打开了一个),我们也能够让服务器停止运行。

系统规格:Debian 7.7、512MB RAM、512MB swap、2 核(速度未知)、nginx、PHP5-FPM、MySQL Server。

我的终端窗口的屏幕截图几乎讲述了这个故事:

在此处输入图像描述

在轻冲浪期间,vmstat si/so 值(大部分)为 0。当我们同时浏览该站点时,值会上升,而 htop 表明正在进行一些严重的挣扎。有了新的 nginx/php-fpm 设置,如果我简单地运行sudo service php5-fpm restart,一切都已修复。同样的问题也发生在 Apache 上,如果我们同时浏览网站,si/so 飙升,网站冻结,然后它要么在一段时间后自行恢复,要么我必须重新启动 Apache。

我在这里不知所措。我宁愿继续我的 nginx 设置并对其进行故障排除。在这种情况下,似乎 php-fpm 可能是问题所在。但是只有我们访问服务器,这是非常不可接受的。如果她突然有 20 个人同时访问该网站,我们就完蛋了。

如果尝试在 512MB 2 核服务器上运行 WordPress 网站失败了,请告诉我。我可能需要升级到 1024MB/4 核。

nginx
  • 2 2 个回答
  • 284 Views

2 个回答

  • Voted
  1. Best Answer
    DTK
    2014-10-27T20:59:48+08:002014-10-27T20:59:48+08:00

    将您的应用程序和显示逻辑(正面)与数据访问逻辑和存储(背面)分开。数据库将生成大量 IO 活动,因此会减慢同一服务器内的其他操作。

    添加内存。不,说真的,添加内存。访问存储在内存中的数据比访问存储在闪存驱动器中的数据更快,这比访问存储在旋转硬盘驱动器中的数据更快。

    在应用程序和数据库之间添加一个缓存层,例如 memcached 或空间中的其他一些。同样,这意味着可以从内存中提取频繁访问的数据,而不是从旋转的盘片中提取。

    更多硬盘。硬盘一次只能寻找一个物理位置。通过增加主轴数,您可以让其他人在阅读时进行搜索,并将更耗时的部分(搜索)分配给更多的物理设备。

    在多个物理框之间拆分 web-head 并设置负载均衡器以在它们之间喷射请求(需要注意的是它们都将会话数据存储在共享存储中,例如数据库或 CIFS/NFS 共享中的文件),以便他们可以分担负载。

    使用提供连接池和连接重用的 Web 服务器,因为相对于服务请求而言,启动连接的时间很长,尤其是在大多数 hte 数据都在内存中的情况下。

    审核您的一个或多个服务器内部的进程,并确定是否存在没有建立价值的无关进程。确定是否有任何正在使用资源(RAM、CPU、磁盘 IO)但没有创造价值,并确定是否可以安全地禁用它们。

    通过 Berkeley Syslog 将您的日志(尤其是 http 访问日志和 http 错误日志)流式传输到专用日志框(运行 RSyslogd 或 Splunk 等),而不是写入本地磁盘。同样,本地磁盘访问成本很高。

    检测您的服务器并观察是否以及有多少数据正在从主内存换出到磁盘。如果超过 5%,或者数量不均匀且波动很大,请添加更多 RAM。说真的,分页到磁盘是缓慢、昂贵和痛苦的。

    检测您的 php 并找出最繁忙的部分,以及哪些部分使用哪些资源集。为 RAM 使用、CPU 时间、磁盘 IO 使用、网络使用分配成本。按平均访问时间来衡量这些成本。实际上根据这些成本向自己收费,并将钱存入您的优化基金。现在看看如何省钱。

    但说真的,更多的内存。


    编辑1:这就是我可以打破它的方式。这是一个非常粗糙的餐巾纸背面设计,但它说明了如何使其规模化。可能看起来很新的部分是队列位。它们本质上抽象出网络流量,并使整个系统的耦合度降低。这意味着数据后端和网络头之间的瞬时瞬态将减少破坏性,并且将更容易恢复。队列在 Web 头中的应用程序和数据库服务器中的前端之间运行,并由队列管理器进行管理。这种更松散的耦合将减少在半夜为单个瞬时信号而进行寻呼的需要。

    基本设计图

    • 2
  2. Mike
    2014-10-27T19:23:34+08:002014-10-27T19:23:34+08:00

    nginx 几乎不需要做任何调整。您可以执行的所有 OS/nginx 调整可能会使您每秒多获得 5-10% 的请求。在我看来,你比任何东西都更受内存限制。您最好的选择是从您的网络服务器中删除 php-fpm 进程,并创建 nginx 向其发送流量的应用服务器。

     ---> internet -> nginx -> many app servers
    
    • 0

相关问题

  • Gzip 与反向代理缓存

  • nginx 作为代理的行为

  • Nginx 学习资源 [关闭]

  • 提供 70,000 个静态文件 (jpg) 的最佳方式?

  • 在 Apache、LightTPD 和 Nginx Web 服务器上提供 PHP 5.x 应用程序的现状?

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