上线 5 分钟,网站就炸了!

简介: 500错误

大家好,我是小林。

昨晚我发文上线了自己的网站,结果发文上线不到 10 分钟, 服务器就炸了,读者疯狂跟我说网站 500 错误了。

26.jpg

当时的场面直接尴住了,特别像在公司发布上线新的项目后,bug 频繁报。

评论区也有个课代表读者,跟大家科普了 500 错误是什么?简直太好笑了哈哈


25.png

今天就来复盘下昨天的问题。


为什么会有 500 错误?


收到大家反馈的错误后,我马上就去服务器查看 nginx 的 error 日志了,发现频繁报错了这个错误:“Too many open files”。

24.jpg

很快我就知道是文件描述符受限而导致 nginx 频繁报这个错误,每一个 TCP 连接都会占用一个文件描述符,当时发文不到 10 分钟,文章阅读就已经 1000 多了,瞬间一下子 1000 多个请求过来,就导致文件描述符被占满了,从而 nginx 就回 500 错误。

所以,要解决这个问题,就要调大文件描述符的显示。

首先,先来看看系统的最大描述符数:

23.png

这个是默认值,有18万个,那肯定不是这里受限。

然后,通过 ulimit -n 查看每个用户的最大描述符数:

22.png

这个也是默认值,也有 6.5 万个,说明也不是这里受限。

然后,通过 /proc//limits 这个文件查看  nginx 工作进程的最大描述符数:

21.jpg

可以看到,最大值才 1024 个!猜测 nginx 工作进程的最大描述符数太小而导致 nginx 报 Too many open files 的错误。


要怎么调大 nginx 的工作进程的最大描述符数呢?


很简单,只需要在 nginx.conf 配置调大 worker_rlimit_nofile 的值,这个参数单跟每个工作进程可以建立的最大连接数量息息相关,我这里调大到了 65535。

20.png

然后重新 reload nginx 的配置,再查看 /proc//limits:

19.jpg

可以看到,nginx 的工作进程最大描述符已经设置为 65535。

调大nginx工作进程最大描述符后,nginx 的 error 日志就没有在报错了,至此 500 错误的问题就解决了


为什么网站访问很慢?


解决了 500 错误的问题后,后面又有很多读者反馈网站访问太慢了。

不瞒大家说,小林的服务器的配置确实很渣,还是去年阿里云活动白嫖的。1核心 CPU,2 GB 内存,5M 带宽:

18.png

其实小林在开设网站之前,就调研了身边的朋友他们的服务器配置如何?

我有位朋友也有个网站,他的网站每日 uv 有 1 万多,也就是每天有 1 万多人访问,这是挺牛逼的访问量了,但是他的服务器配置比我还低,访问平时还是挺正常的。

我心想我网站能每日 uv 有 5000 有开心了,所以按理来说我这个配置就够的了,就没有买更好的服务器配置,就用白嫖的服务器来看看效果。

给大家看看昨晚 8 点发文后的系统监控情况:

image.gif

17.jpg

16.jpg

可以看到,CPU 和 内存远远没有达到瓶颈。所以网站访问慢的原因可以排除内存和 CPU 的限制。

接下里看看网络监控情况:

15.jpg

昨晚一发文,服务器的出口流量就直接到峰值了,一直维持 7M/s 的出口流量,这个出口流量已经达到服务器的带宽限制了。

所以,网站访问慢的原因就是服务器的带宽不够

我的网站属于静态网站,然后用 nginx 部署,没有用到数据库之类的东西,所以是一个很轻量级的网站,CPU 和 内存 目前为止都是完全够用的,而且文章的图片我都没有放到服务器上,而是放到另外一个图床,所以大家访问的只是服务器的前端文件(js,html)这些。

昨天刚发文是因为一下太多请求导致带宽被打满的,等这个峰值过去后,其实出口流量也没那么多的了,比如现在出口流量就 2M/s,带宽也勉强够用。

14.jpg

等以后小林的网站日常带宽被打满后,我在充钱升级服务器设备吧哈哈。

另外,我还给网站做了个优化,在 nginx 打开了gzip 压缩,这样传输文件会经过压缩,这样带宽流量就能减少了一些。

在没有开启 gzip 压缩之前,打开这篇 2 万字的 TCP 文章,全部资源加载完需要 6 秒(并不是说打开这个文章要 6 秒才显示)。

13.jpg

在开启 gzip 压缩后,全部资源加载完只需要不到 3 秒,性能提升 50 %!

12.jpg

以后网站有任何异常的情况,我在跟大家分享,在解决 bug 的路上进步

相关文章
|
3月前
|
Windows
十分钟搭建自己的在线书库随时随地看小说,Kindle不再盖泡面!
十分钟搭建自己的在线书库随时随地看小说,Kindle不再盖泡面!
236 0
|
6月前
|
存储 运维 监控
语雀故障与反思,随便再领半年会员!
语雀故障与反思,随便再领半年会员!
330 0
|
7月前
|
Java 程序员 开发者
太卷了!这份Java性能调优手册仅上线1小时,竟被恶意封杀下架
在各大厂的面试中,性能优化的问题肯定不会缺席,这足以说明其重要性。今天给大家带来的便是由资深程序员葛一鸣老师写的《Java程序性能优化实战》,同样是没有开源版本,我会将领取方式放在文末 Java程序性能优化实战 我看过几篇讲解Java程序性能优化的图书,要么是内容不够深入,要么是过于晦涩难懂,不够浅显,而这本书却让我眼前一亮,很多困扰我的问题都能在书中找到答案。它涵盖了各种程序员所需的性能优化知识点,是Java开发者提升水平的必读佳作 来看看目录内容,里面一定有你想看的 亮个相吧(狗头.jpg) 想要更进一步的Java开发者一定不能
49 0
|
4天前
|
小程序
大咖与小白的日常:三分钟搭建线上五子棋小程序
童年回忆杀来了:如何快速搭建一套无广告纯净版线上五子棋小程序?
|
C语言 C++
提前做好准备吧,过个浪漫的圣诞。
圣诞节没什么礼物,来个爱心和彩色圣诞树代码(彩色圣诞树可以写喜欢的人名字哦)
76 0
提前做好准备吧,过个浪漫的圣诞。
|
存储 缓存 监控
最近线上发生的两个坑爹锅!
最近由于在技改,发生了不少问题,前文中说的缓存穿透只是其中之一,想了想,虽然都是比较简单的问题,但是应该实际中还是有不少人碰到过,这些问题看似很简单,但是你绝对应该踩过。
最近线上发生的两个坑爹锅!
|
vr&ar 开发者 iOS开发
开发者任务中心上线!千元豪礼送不停!
开发者任务中心上线啦!做任务,得积分及实物好礼,带你一站式玩转社区!
开发者任务中心上线!千元豪礼送不停!
|
达摩院
【非广告】半年时间 90% 的收益就问你慌不慌
先说明这篇文章不包含任何广告内容,也不提供任何投资理财建议,股市有风险,投资需谨慎! 都说牛市来了,今年的 A 股的行情确实很不错,从上面的截图中可以看到阿粉的一只基金已经收益 90% 了。90% 是什么概念,反正阿粉是没有过的,估计很多人都没有经历过这种收益,所以这几天阿粉慌的一批,除了慌的很之外,另一个就是懊悔的很,当初应该多买点的,只能说人性是贪婪的。
【非广告】半年时间 90% 的收益就问你慌不慌
|
弹性计算 算法 数据可视化
头条!!20年轻小伙教你如何上线——后端用户管理项目。震惊35岁高危程序员
ECS的操作 和 java-ssm框架 /后端用户管理项目
140 0
头条!!20年轻小伙教你如何上线——后端用户管理项目。震惊35岁高危程序员
|
机器学习/深度学习 供应链 算法
春节剁手的人太少?看手淘怎么做用户增长
小叽导读:本文介绍以手淘促活为目的的全链路智能投放算法框架,该框架目前接入以 Pagani 为核心的全链路运营平台,使用用户意图识别算法圈选出目标人群,借助物料智能推荐和权益动态面额等算法实现全链路上用户的个性化触达干预。以2019春节手淘促活为例,介绍权益智能投放框架的设计思路和实际应用。
1437 0
春节剁手的人太少?看手淘怎么做用户增长