标签: high-load

使用 nginx 作为主 Web 服务器的缺点?

我已经看到数百万个网站使用 nginx 作为与 Apache 一起工作的代理网络服务器。但是我看到很少有服务器仅将 nginx 作为默认网络服务器运行。这种配置的主要缺点是什么?

我可以看到一些:

  • 无法使用像 .htaccess 这样的每个目录配置文件,所以每个配置更改都应该对主服务器配置文件进行,并且需要重新加载服务器。但是 pecl htscanner 可以补偿它们的 php 设置
  • nginx 的 mod_php 不可用,例如可以通过 php-fpm 进行补偿。

其他人是什么?为什么人们不直接放弃 Apache 并转向 nginx 或任何其他轻量级解决方案?可能是,有什么特殊原因?

编辑:这个问题主要是关于使用 LAMP 堆栈。

nginx high-availability high-load apache-2.2

12
推荐指数
2
解决办法
1476
查看次数

低 CPU/内存使用率下的高 Linux 负载

我有一个很奇怪的情况,我的 CentOS 5.5 机器负载很高,但使用的 CPU 和内存却很低:

top - 20:41:38 up 42 days,  6:14,  2 users,  load average: 19.79, 21.25, 18.87
Tasks: 254 total,   1 running, 253 sleeping,   0 stopped,   0 zombie
Cpu(s):  3.8%us,  0.3%sy,  0.1%ni, 95.0%id,  0.6%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   4035284k total,  4008084k used,    27200k free,    38748k buffers
Swap:  4208928k total,   242576k used,  3966352k free,  1465008k cached

free -mt
             total       used       free     shared    buffers     cached
Mem:          3940       3910         29          0         37       1427
-/+ buffers/cache:       2445       1495
Swap:         4110        236 …
Run Code Online (Sandbox Code Playgroud)

linux high-load

12
推荐指数
1
解决办法
3万
查看次数

为什么我的 Web 服务器会在高负载时通过 TCP 重置断开连接?

我有一个带有 nginx 的小型 VPS 设置。我想从中榨出尽可能多的性能,所以我一直在尝试优化和负载测试。

我正在使用 Blitz.io 通过获取一个小的静态文本文件来进行负载测试,并遇到一个奇怪的问题,即一旦同时连接的数量达到大约 2000,服务器似乎正在发送 TCP 重置。我知道这是一个非常大量,但使用 htop 后,服务器在 CPU 时间和内存方面仍有大量空闲时间,所以我想找出这个问题的根源,看看我是否可以进一步推动它。

我在 2GB Linode VPS 上运行 Ubuntu 14.04 LTS(64 位)。

我没有足够的声誉直接发布此图表,因此这里是 Blitz.io 图表的链接:

在此处输入图片说明

以下是我为找出问题根源所做的工作:

  • nginx 配置值worker_rlimit_nofile设置为 8192
  • nofile设置为64000为硬性和软性限制rootwww-data用户(什么nginx的运行为)/etc/security/limits.conf
  • 没有任何迹象表明有任何问题/var/log/nginx.d/error.log(通常,如果您遇到文件描述符限制,nginx 会打印错误消息,这样说)

  • 我有 ufw 设置,但没有速率限制规则。ufw 日志表明没有任何内容被阻止,我尝试禁用 ufw 并得到相同的结果。

  • 没有指示性错误 /var/log/kern.log
  • 没有指示性错误 /var/log/syslog
  • 我已将以下值添加到/etc/sysctl.conf并加载它们sysctl -p,但没有任何效果:

    net.ipv4.tcp_max_syn_backlog = 1024
    net.core.somaxconn = 1024
    net.core.netdev_max_backlog = 2000
    
    Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

编辑:我做了一个新的测试,在一个非常小的文件(只有 3 个字节)上增加到 3000 个连接。这是 Blitz.io 图表:

Blitz.io 图

同样,根据 …

nginx reset tcp high-load

12
推荐指数
1
解决办法
1万
查看次数

nagios 服务器上的高负载 -- nagios 服务器有多少服务检查太多了?

我有一台运行 Ubuntu 的 nagios 服务器,带有 2.0 GHz Intel 处理器、RAID10 阵列和 400 MB 的 RAM。它监控 8 台主机上的 42 项服务,其中大部分使用 check_http 插件甚至 5 分钟检查一次,有些每分钟一次。最近nagios服务器的负载一直在4以上,经常高达6。服务器还运行cacti,每分钟收集6台主机的统计信息。

我想知道,像这样的硬件应该能够处理多少服务?负载这么高是因为我在挑战硬件的极限,还是这个硬件应该能够处理 42 个服务检查加上 cacti?如果硬件不足,我应该考虑添加更多 RAM、更多内核还是更快的内核?其他人正在运行哪些硬件/服务检查?

hardware nagios high-load

9
推荐指数
2
解决办法
1万
查看次数

在 Linux Ubuntu 上加载平均异常

在过去的几天里,我一直试图了解我们的基础设施中发生的怪事,但我一直无法弄清楚我们的情况,所以我求助于你们给我一些提示。

我一直在 Graphite 中注意到,load_avg 的峰值大约每 2 小时发生一次,具有致命的规律性 - 不完全是 2 小时,但非常规律。我附上了一张我从 Graphite 中截取的截图

平均负载 - 点击放大

我一直在研究这个问题——这种规律性让我认为这是某种 cron 作业或类似的东西,但这些服务器上没有运行 cronjobs——实际上这些是在 Rackspace 云中运行的虚拟机。我正在寻找的是某种可能导致这些问题的迹象以及如何进一步调查。

服务器相当空闲 - 这是一个临时环境,因此几乎没有流量进入/应该没有负载。这些都是 4 个虚拟核心 VM。我可以肯定的是,我们大约每 10 秒采集一次 Graphite 样本,但如果这是造成负载的原因,那么我希望它会一直很高,而不是每 2 小时在不同服务器上的波次中发生一次。

任何有关如何调查此问题的帮助将不胜感激!


以下是来自 sar 的 app01 的一些数据——这是上图中的第一个蓝色尖峰——我无法从数据中得出任何结论。也不是您看到的每半小时(不是每 2 小时)发生的字节写入峰值是由于厨师客户端每 30 分钟运行一次。我会尝试收集更多数据,即使我已经这样做了,但也无法真正从这些数据中得出任何结论。

加载

09:55:01 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
10:05:01 PM         0       125      1.28      1.26      0.86         0
10:15:01 PM         0       125      0.71      1.08      0.98         0
10:25:01 PM         0       125      4.10      3.59      2.23         0
10:35:01 PM         0       125      0.43      0.94 …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu high-load graphite

9
推荐指数
1
解决办法
1148
查看次数

高平均负载,高等待,dmesg raid 错误消息(debian nfs 服务器)

Debian 6 on HP proliant (2 CPU) with raid(2*1.5T RAID1 + 2*2T RAID1 加入 RAID0 使 3.5T)主要运行 nfs 和 imapd(加上用于 windows 共享的 samba 和用于预览网页的本地 www);本地 ubuntu 桌面客户端安装 $HOME,笔记本电脑通过 nfs/smb 访问 imap 和奇数文件(例如视频);通过家用路由器/交换机连接 100baseT 或 wifi 的盒子

uname -a

Linux prole 2.6.32-5-686 #1 SMP Wed Jan 11 12:29:30 UTC 2012 i686 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

安装程序已经工作了几个月,但很容易间歇性地变得很慢(从服务器安装 $HOME 的桌面用户体验,或笔记本电脑播放视频),现在一直很糟糕,我不得不深入研究它以试图找出问题所在(! )

服务器在低负载下似乎还可以,例如(笔记本电脑)客户端(在本地磁盘上带有 $HOME)连接到服务器的 imapd 和 nfs 挂载 RAID 以访问 1 个文件:顶部显示负载 ~ 0.1 或更少,0 等待

但是当(桌面)客户端挂载 $HOME 并启动用户 KDE 会话(所有访问服务器)时,top显示例如

top - 13:41:17 up …
Run Code Online (Sandbox Code Playgroud)

linux debian nfs iowait high-load

8
推荐指数
1
解决办法
2060
查看次数

如何限制会话数?

我需要一种方法来跟踪和限制网络会话到网络应用程序。“会话”被松散地定义为单个用户浏览所述网络应用程序的页面。我觉得可以翻译成:

  • 会话被定义为一个元组,<clientIP,vHost>或者是<clientIP,serverIP,serverPort><cookie,vHost>,具体取决于层和可用数据
  • 会话在用户将身份验证数据发送到定义的登录 URI 后开始
  • 会话在用户点击定义的注销 URI 后结束
  • 如果在客户端请求最后一个对象后指定的超时已过期,则会话结束

达到指定的会话限制后,应将下一个用户定向到自定义错误页面。我还需要一种方法来跟踪当前会话数以进行监控,以及将监控服务器(它定期向 web 应用程序发出查询)列入白名单并使其不受限制的能力。

我可以使用的东西:

  • RadWare AppDirector,其中 Web 应用程序定义了自己的场并以反向代理模式运行
  • 阿帕奇 2.2
  • SLES 11 SP2

我宁愿不涉及额外的代理服务器,但如果没有其他选择,我会考虑它。

所有这一切背后的基本原理是,上述 Web 应用程序很容易过载并开始不规律地拒绝请求,这激怒了(通常)在此过程中丢失表单输入数据的工作用户。通过指定一个不太可能发生过载条件的限制,我们希望创建一个明确定义的故障条件,如果负载可能会激增,用户将被告知稍后返回。

编辑:Web 应用程序是一个 3 层实现,第一层(表示层,在 Apache vHost 中实现为 CGI 代码)相当简单,显然仅限于应用服务器之间的基本错误处理和请求负载平衡。它不会对其运行的 Web 服务器施加任何重大负载 - 这就是为什么我们在 AppDirector 场中仅以故障转移模式(无负载平衡)运行它,这应该在某种程度上简化事情。

除此之外的一切对我们来说基本上都是一个黑匣子——在数据层,我们有一个 MSSQL 数据库,但几乎不可能从供应商那里获得有关表结构的任何有意义的信息。应用服务器是闭源的,供应商使用了一个相当全面的框架来实现,但似乎无法回答更不复杂的操作相关问题。

load-balancing high-load session apache-2.2

8
推荐指数
1
解决办法
5844
查看次数

如何为两个节点之间的高频连接调整 TCP

过去几天我一直在挠头,试图为以下问题提出解决方案:

在我们的数据中心,我们有一个运行在 BigIP 硬件上的 F5,它充当来自全国各地不同办公地点的客户端机器的 HTTPS 请求的单一入口点。F5 终止 TLS,然后将所有请求转发到两个 Traefik 负载均衡器,后者将请求路由到各种服务实例(Traefik 节点在 Red Hat Enterprise 上的 Docker 中运行,但我认为这与我的问题无关)。从吞吐量、CPU 和内存的角度来看,这三个网络组件完全有能力处理大量请求和流量,并有足够的备用容量。

但是,我们注意到客户端发出的 HTTP(S) 请求频繁出现 1000 毫秒的延迟,尤其是在高负载时间。我们将问题跟踪到以下根本原因:

  • 在高负载期间,F5“客户端”以高频率(可能每秒 100+)向 Traefik“服务器”节点发起新的 TCP 连接。
  • 当 HTTP 响应返回时,这些连接在 Traefik“服务器”端终止。
  • 每个关闭的连接在 Traefik 主机上保持 TIME_WAIT 状态 60 秒。
  • 当 F5 发起新连接时,它会从其临时端口范围中随机选择一个可用端口。
  • 有时(通常在高负载期间),Traefik 中已经有一个处于 TIME_WAIT 状态的连接,具有相同的源 IP + 端口、目标 IP + 端口组合。发生这种情况时,Traefik 主机上的 TCP 堆栈 (?) 会忽略第一个 SYN 数据包。注意:RFC 6056称此为 instance-ids 的冲突
  • 1000 毫秒后,重传超时 (RTO) 机制在 F5 上启动并重新发送 SYN 数据包。这次 Traefik 主机接受了连接并正确完成了请求。

显然,那些 1000 毫秒的延迟是绝对不能接受的。所以到目前为止我们已经考虑了以下解决方案: …

reverse-proxy load-balancing tcp f5-big-ip high-load

8
推荐指数
1
解决办法
687
查看次数

Ubuntu 负载平均峰值但 CPU 空闲

我们在云网络上有一台服务器,由第三方提供。我们正在运行 Ubuntu 10.04 服务器版。

问题似乎是随机发生的,每天大约发生一到三次。顶部的平均负载通常在 2 左右,服务器运行正常,但在这些随机时间,平均负载会飙升至 30-35 左右,一切都停止了。无法访问我们的网站,无法在服务器上执行命令,无法执行任何操作。如果您尚未登录,甚至无法登录。

我们能够看到高平均负载的唯一方法是不断运行 top,以便在问题发生时它已经在运行。似乎如果它已经在运行,它会继续正常工作,但是如果它没有运行,则无法启动它。进入这种状态时无法运行任何命令使我们很难诊断问题......而且我们无论如何都不认为自己是服务器专家。

在我看来很奇怪的是,平均负载峰值如此之高,但处理器保持空闲状态,并且有足够的空闲内存。再说一次,我根本不是专家,但我非常基本的理解是,如果内存可用并且处理器没有最大化,那么就不应该有进程在等待(我很可能误会了)。

当我输入这个时,我发现它开始飙升并在一切锁定之前设法运行了一些命令。输出如下:

uname -a

Linux <server name> 2.6.32-308-ec2 #16-Ubuntu SMP Thu Sep 16 14:28:38 UTC 2010 i686 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

最佳

top - 10:55:08 up 15:28,  4 users,  load average: 12.29, 7.01, 3.89
Tasks: 313 total,   3 running, 308 sleeping,   0 stopped,   2 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4210704k total,  2163024k used,  2047680k free,   162320k buffers
Swap:  2096440k total,        0k used,  2096440k free,  1690464k cached

  PID …
Run Code Online (Sandbox Code Playgroud)

ubuntu central-processing-unit zombie high-load

7
推荐指数
1
解决办法
6417
查看次数

“高”IO 率是否健康?

我使用当前托管网站的 Linode 做了很多工作,但时不时地(通常每两个月左右一次) - 我会收到关于我的 IO 率太高的警告(通常仅高于 6000) . 我得到的最后一个说:“您的 Linode ... 已超过磁盘 io 速率的通知阈值 (1000),过去 2 小时的平均值为 6557.69”。

我有点担心这个,但真的不知道该怎么想。它健康吗?查看我的服务器图表,我从来没有看到任何特别的东西,下面是我的低流量站点的两个“常规”日(请注意,两个主要峰值是我备份服务器的 rsyncing)。另请注意,即使我那天 rsync 两次,我也没有收到有关这些的警告。图表如下:

http://i.imgur.com/vLo7A.png

http://i.imgur.com/OIHT9.png

我试过看,iotop但每当我看的时候,一切看起来都很健康。

有任何想法吗?

maintenance linux ubuntu io high-load

7
推荐指数
1
解决办法
2520
查看次数