Appearance
服务器维护常见问题
linux服务器定时执行任务
参考链接:
详解:
crond 和 crontab
1、crontab -e,进入编辑界面 2、输入/2 * * * * curl http://www.baidu.com,表示每两分钟访问一次网页 3、保存退出,然后service crond start启动服务 4、chkconfig crond on设置开机自启动 5、 基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1~59 每分钟用或者 /1表示 第2列表示小时1~23(0表示0点) 第3列表示日期1~31 第4列表示月份1~12 第5列标识号星期0~6(0表示星期天) crond不支持精确到秒
高性能系统
参考链接:
详解:
高性能方法
- 服务器硬件能力(但有瓶颈)
- 缓存(服务器缓存、浏览器缓存)(但不适用于提升并发量)
- 消息队列(解耦+削峰+异步)
- 负载均衡
- 数据库分库(读写分离)、分表(水平分表、垂直分表)
- CDN 加速(图片、视频)
- 合适的数据库连接池、线程池
- 多线程
容灾方法
- 光纤断/机房停电-分布式部署
- 服务器硬件故障死机-数据热备份
- 程序崩溃-自动拉起(重启)
- 高并发崩溃-负载均衡、流量拥塞控制(参考链接3)、频率控制
- 系统指标异常-监控报警(流量、进程、cpu、IO、丢包、延时等)
- 不可预知的程序bug-灰度发布
海量服务优化建议
- 大系统分布式解耦(微服务)
- 先运行正常再优化
- 架构重构
正向代理与反向代理
参考链接:
详解:
正向代理
场景
翻墙,卖票的黄牛
描述
正向代理客户端。
国内访问谷歌,直接访问访问不到,我们可以通过一个正向代理服务器,请求发到代理服,代理服务器能够访问谷歌,这样由代理去谷歌取到返回数据,再返回给我们,这样我们就能访问谷歌了。
用途
- 访问原来无法访问的资源,如google
- 可以做缓存,加速访问资源
- 对客户端访问授权,上网进行认证
- 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
反向代理
场景
代理转发给各服务器,负载均衡
描述
反向代理服务端。
代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器
用途
- 保证内网的安全,阻止web攻击,大型网站,通常将反向代理作为公网访问地址,Web服务器是内网
- 负载均衡,通过反向代理服务器来优化网站的负载
获取一个进程的内存并监控
参考链接:
详解
ps 可以获知一个进程所占用的内存
ps -O rss -p 3506
pidstat 查看进程状态(linux)
pidstat -r -p 3506 1
top/htop 查看进程状态(mac)
htop -p 31796
阿里云CDN
参考链接:
详解
CDN加速原理
网络请求相关.md -> CDN加速原理
应用场景
- 图片小文件:适用于网站或应用中小文件的加速分发,例如各种门户网站、电子商务类网站、新闻资讯类网站或应用、娱乐游戏类网站等。
- 大文件下载:适用于各类大文件的下载和分发加速,例如游戏安装包、应用更新、手机ROM升级、应用程序包下载等,平均单个文件大小在20 MB以上。
- 视音频点播:适用于各类视音频网站,例如影视类视频网站、在线教育类视频网站、新闻类视频网站、短视频社交类网站以及音频类相关网站和应用,支持MP4、FLV等主流视频格式。
性能指标
- DNS时间:指从浏览器终端发起的访问请求开始,到浏览器终端获得最终访问主机IP地址所消耗的时间。
- TCP时间:指客户端与目标服务器建立TCP连接所消耗的时间。
- SSL时间:指客户端和Web服务器建立安全套接层(SSL)连接的消耗时间。
- 发送时间:指SSL握手完成开始发送请求到请求发送完成所消耗的时间。
- 建立连接时间:HTTP包含“DNS时间+TCP时间”;HTTPS包含“DNS时间+TCP时间+SSL时间”。
- 响应时间:指浏览器发出HTTP请求后,Web服务器进行后台处理以及响应的时间。
- 下载用时:指您收到Web服务器返回的第一个数据包,到完成下载的总时间。
- 首包时间:指从客户端开始发送请求到收到服务器端返回的第一个HTTP协议数据包之间所需要的时间
- 在上传路径中,首包时间主要包含了DNS解析时间、TCP用时、SSL用时、发送时间和响应时间。
- 在下载路径中,首包时间主要包含了DNS解析时间、TCP用时、SSL用时、发送时间和响应时间。
- 整体性能:指完成整个文件的上传或下载所需要的总时长。
- 丢包率:指在网络传输中丢失数据包的数量占发送数据包总数的比率。
- 回源率:
- 回源请求数比:指边缘节点对于没有缓存、缓存过期(可缓存)和不可缓存的请求占全部请求记录的比例。越低则性能越好。
- 回源流量比:回源流量是回源请求文件大小产生的流量和请求本身产生的流量。回源流量比=回源流量÷用户请求访问的流量,比值越低,性能越好。
- 缓存命中率:
- 字节命中率=CDN缓存命中响应的字节数÷CDN所有请求响应的字节数
- 请求命中率=CDN缓存命中的请求数÷CDN所有的请求数
使用限制
- 加速区域为国内则需要ICP备案
- CDN目前不支持接入的域名
- 无法正常访问或内容不含有任何实质信息
- 游戏私服类
- 传奇类游戏和纸牌类游戏
- 盗版软件等无版权下载网站
- P2P类金融网站
- 彩票类网站
- 违规医院和药品类网站
- 涉黄、涉毒、涉赌等
- 服务条目数量限制见官方文档
- 性能压测需提前至少3个工作日通过提交工单报备
使用流程
开通CDN服务->添加加速域名->推荐配置(可选)->模拟访问测试(可选)->配置CNAME->停止加速服务
添加加速域名:填写业务信息(加速域名/业务类型/加速区域/资源分组),填写源站信息(源站信息/优先级/权重/端口)
推荐配置(优化)
- 提高缓存命中率与访问速度
- 合理配置缓存过期时间
- 设置的缓存时间过短或未设置缓存规则,导致频繁回源站获取资源。
- 建议
- 不常更新的静态文件:例如图片、应用下载类型等,缓存时间建议设置1个月以上。
- 频繁更新的静态文件:例如JS、CSS等,根据实际业务情况设置。
- 开启过滤参数 客户端回源获取资源时会去除URL请求中?之后的参数
- 合理配置缓存过期时间
- 提高CDN的访问安全性
- 边缘Web应用防火墙WAF(Web Application Firewall)
- 配置DDoS高防
- 区域封禁
- 设置带宽上限
- 当检测到某个统计周期的带宽超出您设置的带宽上限时,CDN将停止加速服务,域名将会自动下线,所有访问该域名的用户请求都会直接回源站。
- 创建报警规则
- 及时了解带宽异常并快速进行处理
- 提高CDN的访问性能
- 页面优化
- CDN会自动删除页面的冗余内容,例如HTML页面、内嵌JavaScript和CSS中的注释以及重复的空白符,可有效去除页面的冗余信息,缩小文件体积,提高加速分发效率。
- 图片处理:格式转换、质量转换、裁剪、缩放、水印
- 配置Range回源
- 客户端通知源站服务器只返回指定范围的部分内容,适用于音视频等较大文件的内容分发加速,可减少回源流量消耗,并提升资源的响应时间。
- 智能压缩
- CDN节点向您返回请求的资源时,会对文本文件进行Gzip压缩,可有效缩小传输文件的大小,提升文件传输效率,减少带宽消耗。
- Brotli压缩
- Brotli是开源的一种新型压缩算法,当源站文件的大小超过1024 B时,可以使用智能压缩或Brotli压缩来压缩文件,有效缩小传输文件的大小,提升文件传输效率,Brotli压缩比Gzip压缩性能更好,性能提升约15%~25%。
- Brotli压缩支持的文件类型有text/xml、text/plain、text/css、application/javascript、application/x-javascript、application/rss+xml、text/javascript、image/tiff、image/svg+xml、application/json、application/xml。
- 客户端请求携带请求头Accept-Encoding: br:客户端希望获取对应资源时进行Brotli压缩。
- 服务端响应携带响应头Content-Encoding: br:服务端响应的内容是经过Brotli压缩后的资源。
- 页面优化
- 提高缓存命中率与访问速度
模拟访问测试
CDN控制台成功添加加速域名后,为保证DNS解析顺利切换而不影响现有业务,建议先完成模拟访问测试再切换DNS解析。
- 步骤
- 获取加速域名的CNAME记录值
- 获取CNAME对应的IP地址
- windows:ping CNAME地址,得到ping的IP地址
- Mac:dig CNAME地址,得到dig的IP地址
- 本地电脑绑定hosts文件,形如:203.0.113.1 example.com
- 本地浏览器访问加速域名,在“检查”中查看network的请求
- 如果Remote Address后的IP和在hosts文件中绑定的IP一致,表示配置正确,您可以在域名解析服务商处配置CNAME。
- 如果Remote Address后的IP和在hosts文件中绑定的IP不一致,表示配置不正确,需要检查hosts文件中绑定的IP地址是否正确,确保该IP地址是CNAME地址的IP。
- 步骤
配置CNAME
配置是否正确可通过模拟访问测试检查
停止加速服务
停用(回源有流量计费)或删除(无流量)加速域名