这个问题是关于诊断面向互联网的 Web 应用程序中网络流量增加的原因。
背景:所讨论的网络应用程序是一个基于 Django 的论坛,用户可以在其中上传图像和文本内容,然后进行讨论。
基础设施:操作系统是Ubuntu 14.04
。Web 服务器是gunicorn
用作nginx
反向代理的。应用程序及其数据库托管在一台机器上,即 AWS EC2 实例。最后,所有图像都从 AWS S3 存储桶保存(并提供)。
症状: NetworkOut
2019 年 4 月 4 日突然翻倍。看这里:
NetworkIn
有类似的效果:
我们的 S3 存储桶的每月总GET
请求量从约 6600 万(我们的通常水平)增加到约 1.3 亿。每月网络传输量从约 1.4 TB 跃升至 2.2 TB。这种增强效应仍在持续,看不到尽头。这几乎就像我们所有的服务器调用都增加了一倍,同时精确地遵循我们日常用户流量的特征。
还要注意什么没有改变:CPU Utilization
实际上保持不变。看:
同样,Disk I/O
我们的用户群也基本保持不变。我们的用户群基本保持不变(包括月度和每日用户)。用户参与度(页面浏览量、会话长度等)基本保持不变。新增内容的数量(例如,每天添加的图片)基本保持不变。
最后,当此活动于 4 月 4 日开始时,应用程序源代码没有任何变化。不过,1 天后进行了一些更改(此后进行了许多更改)。
我尝试过的:我查看了 nginx 和 S3 日志。这是一个庞大的网站。我看到了大量用户发起的请求。很容易迷失其中。总的来说,没有什么明显的恶意行为引起我的注意。我可能错过了什么。
目前我不确定如何诊断此问题。我感觉有些配置错误。如果能从行业专家那里获得建议就太好了。提前谢谢,请随时向我询问其他详细信息。我会将它们作为更新添加到问题底部。
以下是 的输出free -m
:
total used free shared buffers cached
Mem: 63802 57141 6660 6799 147 24454
-/+ buffers/cache: 32539 31262
Swap: 0 0 0