Skip to content
On this page

服务器维护常见问题


linux服务器定时执行任务

  1. 参考链接:

    Centos7 利用crontab定时执行任务及配置方法

    CentOs 7.0实现定时任务(定时访问网页)

  2. 详解:

    crond 和 crontab

    text
    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不支持精确到秒
    

高性能系统

  1. 参考链接:

  2. 详解:

    • 高性能方法

      1. 服务器硬件能力(但有瓶颈)
      2. 缓存(服务器缓存、浏览器缓存)(但不适用于提升并发量)
      3. 消息队列(解耦+削峰+异步)
      4. 负载均衡
      5. 数据库分库(读写分离)、分表(水平分表、垂直分表)
      6. CDN 加速(图片、视频)
      7. 合适的数据库连接池、线程池
      8. 多线程
    • 容灾方法

      1. 光纤断/机房停电-分布式部署
      2. 服务器硬件故障死机-数据热备份
      3. 程序崩溃-自动拉起(重启)
      4. 高并发崩溃-负载均衡、流量拥塞控制(参考链接3)、频率控制
      5. 系统指标异常-监控报警(流量、进程、cpu、IO、丢包、延时等)
      6. 不可预知的程序bug-灰度发布
    • 海量服务优化建议

      1. 大系统分布式解耦(微服务)
      2. 先运行正常再优化
      3. 架构重构

正向代理与反向代理

  1. 参考链接:

  2. 详解:

    • 正向代理

      • 场景

        翻墙,卖票的黄牛

      • 描述

        正向代理客户端。

        国内访问谷歌,直接访问访问不到,我们可以通过一个正向代理服务器,请求发到代理服,代理服务器能够访问谷歌,这样由代理去谷歌取到返回数据,再返回给我们,这样我们就能访问谷歌了。

      • 用途

        1. 访问原来无法访问的资源,如google
        2. 可以做缓存,加速访问资源
        3. 对客户端访问授权,上网进行认证
        4. 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
    • 反向代理

      • 场景

        代理转发给各服务器,负载均衡

      • 描述

        反向代理服务端。

        代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器

      • 用途

        1. 保证内网的安全,阻止web攻击,大型网站,通常将反向代理作为公网访问地址,Web服务器是内网
        2. 负载均衡,通过反向代理服务器来优化网站的负载

获取一个进程的内存并监控

  1. 参考链接:

  2. 详解

    • ps 可以获知一个进程所占用的内存

      ps -O rss -p 3506

    • pidstat 查看进程状态(linux)

      pidstat -r -p 3506 1

    • top/htop 查看进程状态(mac)

      htop -p 31796

阿里云CDN

  1. 参考链接:

  2. 详解

    • 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所有的请求数
    • 使用限制

      1. 加速区域为国内则需要ICP备案
      2. CDN目前不支持接入的域名
        • 无法正常访问或内容不含有任何实质信息
        • 游戏私服类
        • 传奇类游戏和纸牌类游戏
        • 盗版软件等无版权下载网站
        • P2P类金融网站
        • 彩票类网站
        • 违规医院和药品类网站
        • 涉黄、涉毒、涉赌等
      3. 服务条目数量限制见官方文档
      4. 性能压测需提前至少3个工作日通过提交工单报备
    • 使用流程

      开通CDN服务->添加加速域名->推荐配置(可选)->模拟访问测试(可选)->配置CNAME->停止加速服务

      • 添加加速域名:填写业务信息(加速域名/业务类型/加速区域/资源分组),填写源站信息(源站信息/优先级/权重/端口)

      • 推荐配置(优化)

        • 提高缓存命中率与访问速度
          • 合理配置缓存过期时间
            • 设置的缓存时间过短或未设置缓存规则,导致频繁回源站获取资源。
            • 建议
              1. 不常更新的静态文件:例如图片、应用下载类型等,缓存时间建议设置1个月以上。
              2. 频繁更新的静态文件:例如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解析。

        • 步骤
          1. 获取加速域名的CNAME记录值
          2. 获取CNAME对应的IP地址
            • windows:ping CNAME地址,得到ping的IP地址
            • Mac:dig CNAME地址,得到dig的IP地址
          3. 本地电脑绑定hosts文件,形如:203.0.113.1 example.com
          4. 本地浏览器访问加速域名,在“检查”中查看network的请求
            • 如果Remote Address后的IP和在hosts文件中绑定的IP一致,表示配置正确,您可以在域名解析服务商处配置CNAME。
            • 如果Remote Address后的IP和在hosts文件中绑定的IP不一致,表示配置不正确,需要检查hosts文件中绑定的IP地址是否正确,确保该IP地址是CNAME地址的IP。
      • 配置CNAME

        配置是否正确可通过模拟访问测试检查

      • 停止加速服务

        停用(回源有流量计费)或删除(无流量)加速域名