今天有空,请教各位 V 友,怎么优化 LAMP 的网站速度? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
jingyulong
V2EX    程序员

今天有空,请教各位 V 友,怎么优化 LAMP 的网站速度?

  •  
  •   jingyulong 2018-11-11 15:41:54 +08:00 7670 次点击
    这是一个创建于 2574 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我用的

    • Vultr 的 VPS,512M 内存的
    • Cloudflare 的 CDN
    • HTTPS 用的 Let's Encrypt

    站点打开速度最快是 1s 多,Google 了很多,但是没有头绪。可以给一个思路吗?本人也是才接触这些不久。是因为内存小引起的吗?

    点击:博客

    帮忙看看,感激不尽。博客内容轻喷。。。

    85 条回复    2018-11-13 15:31:27 +08:00
    likuku
        1
    likuku  
       2018-11-11 16:17:54 +08:00   1
    Chrome 访问你的博客,接着 Chrome 的菜单 -》视图 -》开发者 -》开发者工具 -》 Network

    刷新一次页面,根据页面加载各种内容的耗时对症下药。
    likuku
        2
    likuku  
       2018-11-11 16:18:43 +08:00   1
    补刀:这么曲线救国推广自己博客就太那啥了,要推广就大大方方广而告之,不丢人好吗。
    hefish
        3
    hefish  
       2018-11-11 17:25:21 +08:00
    打开确实不快,但 wordpress 本来就不算快。可以看一下数据库的延时还是 php 的。
    dowson8684
        4
    dowson8684  
       2018-11-11 17:45:35 +08:00
    时间全花在背景图的加载了。
    lostberryzz
        5
    lostberryzz  
       2018-11-11 17:52:07 +08:00
    Vultr 是哪个 Location 的?如果套 CF 优先 LA,次选 NJ
    jingyulong
        6
    jingyulong  
    OP
       2018-11-11 17:52:14 +08:00
    @likuku 加载的内容除外,就一个几十 k 的页面,响应很慢。我做网站开发也有几年了,这些基本的优化我知道的。我的重点是为什么主页面的延时会比较高,不知道是网络的问题,还是 VPS 硬件的问题?
    jingyulong
        7
    jingyulong  
    OP
       2018-11-11 17:52:34 +08:00
    @likuku PS:其实我这个博客又没有什么内容,即使推广了也没人看的。目前我只想锻炼自己写文章的能力,给自己看的。内容才是王道,等哪天自己文章写好了,也不用推广吧?
    lsido
        8
    lsido  
       2018-11-11 17:54:09 +08:00 via Android
    这还用问吗?你换本地看看咯
    lsido
        9
    lsido  
       2018-11-11 17:54:20 +08:00 via Android
    快的你怀疑人生
    opengps
        10
    opengps  
       2018-11-11 17:55:13 +08:00
    1 楼方法足够你排查大部分问题
    liuxu
        11
    liuxu  
       2018-11-11 17:55:48 +08:00
    主资源 TTFB 2.6s 。。。你慢在服务器延迟上,服务器切成搬瓦工 gia,CN2 香港,软银日本,台湾都行,保证快了
    jingyulong
        12
    jingyulong  
    OP
       2018-11-11 17:56:43 +08:00
    @hefish 可以用什么工具或者技术测数据库的延时吗?我 ping 我的 ip 倒是蛮快的。我看书上说,可以给 PHP 加缓存,有什么好的建议嘛^_^
    jingyulong
        13
    jingyulong  
    OP
       2018-11-11 17:58:30 +08:00
    @dowson8684 背景图大概 100 多 k,目前这不是主要原因,我想找找主页面为什么延迟那么高的原因
    jingyulong
        14
    jingyulong  
    OP
       2018-11-11 17:59:44 +08:00
    @lsido 主页面不大,本地肯定很快
    jingyulong
        15
    jingyulong  
    OP
       2018-11-11 18:00:40 +08:00
    @opengps 服务器的延迟为什么那么高?加载资源的时间都能看的到的
    vishva
        16
    vishva  
       2018-11-11 18:00:50 +08:00
    推荐 <<http/2 基础教程>>
    opengps
        17
    opengps  
       2018-11-11 18:03:25 +08:00
    静态资源似乎占用时间做多,套一层 cdn 吧,CF 还不错
    jingyulong
        18
    jingyulong  
    OP
       2018-11-11 18:04:42 +08:00
    @liuxu 我的 VPS 是北美迈阿密的节点,我用我的 AWS 访问也很慢。。。。。Vultr 充钱进去了,本来搭梯子的,后面想着放个网站在上面,等钱用完了就换一个稳定点的,我看好多人用 Digital Ocean,等到时候试试。。。搬瓦工的好用吗?
    niubee1
        19
    niubee1  
       2018-11-11 18:05:12 +08:00
    缓存, 缓存, 还是缓存.
    jingyulong
        20
    jingyulong  
    OP
       2018-11-11 18:05:23 +08:00
    @vishva 好的,先谢啦,我这就去看看
    liuxu
        21
    liuxu  
       2018-11-11 18:13:10 +08:00
    @jingyulong

    想好好开站,最低标准也得是搬瓦工 gia 的线路,我建议你把博客源站迁移到国内,再套个腾讯阿里的 CDN

    想看速度可以看我个人资料,我的博客就是这么做的,楼上说的资源大小,http2 都不是重点,重点还是主资源 TTFB 太大
    likuku
        22
    likuku  
       2018-11-11 18:20:57 +08:00   2
    @jingyulong 远程看不出,就换服务器上本地测,排除远程网络传输因素,time curl 都可以测,

    wordpress 可以在底部显示页面执行时间么(类似 V2EX 页面底部有执行时长显示的; wp 用的极少,不清楚)?
    执行时间能查到的话,假若 php 执行很慢,你得确认你 php 版本?尽可能上 php7,另外 php 的 APC 缓存加速开了么?

    php7 和 apc 缓存 是否开,都直接影响页面执行性能若干倍。

    页面和 php 能作的都作了,还是慢,那就得查 db 了。

    MySQL 慢查询日志记录开了没?慢查询多不多? mysql 版本?数据表存储引擎类型? InnoDB 么? Innodb mem pool size 够不够大?

    phpmyadmin 查查 db 的最近执行性能统计信息。

    进系统再查 内存是不是不够,swap 是否频繁读写?

    vultr 后台再查查 测试期间 /慢的时候,系统性能 /网络是不是被吃满了?排除资源不够的问题。

    以上,都是最基本的常规排查方式 /流程,算常识了。

    [我做网站开发也有几年了,这些基本的优化我知道的] 好了啦,我们知道你很资深了~
    likuku
        23
    likuku  
       2018-11-11 18:24:39 +08:00   1
    年初也用 这家 512M vps 以 LNMP 跑过 wp,并没有觉得慢过。

    [HTTPS 用的 Let's Encrypt],可能是个影响因素,海外的站点,有时加了 https 就根本没法打开,只开 http 反而蛮正常,建议试试吧。
    luminous
        24
    luminous  
       2018-11-11 19:00:20 +08:00 via Android   1
    你都用上 Cloudflare 那能快吗
    jingyulong
        25
    jingyulong  
    OP
       2018-11-11 21:00:03 +08:00
    @opengps 用什么 cdn 比较好呢
    jingyulong
        26
    jingyulong  
    OP
       2018-11-11 21:05:16 +08:00
    @liuxu 不过迁到国内的话,还要备案,太麻烦了。还是想用国外的服务器,我看有一些博客优化的很好了。还是你理解我想要问的问题了一会去膜拜下你的站点
    jingyulong
        27
    jingyulong  
    OP
       2018-11-11 21:08:39 +08:00
    @likuku 谢谢大神的指点,非常全面了,对我很有帮助,谢谢啦。我一直做.net 开发,除了通用的性能优化,LAMP 的的的确知之甚少,请见谅,还需要多多学习。
    jingyulong
        28
    jingyulong  
    OP
       2018-11-11 21:09:44 +08:00
    @likuku https 有可能是这个问题,我再确认一下
    jingyulong
        29
    jingyulong  
    OP
       2018-11-11 21:10:27 +08:00
    @niubee1 谢谢,我找下相关资料学习下
    jingyulong
        30
    jingyulong  
    OP
       2018-11-11 21:11:29 +08:00
    @luminous 没用 Cloudflare 之前更慢,我再排查下,如果有什么进展告诉你们
    SukkaW
        31
    SukkaW  
       2018-11-11 21:41:11 +08:00   1
    简单看了一下,主要问题就是:
    - 页面 TTFB 过高
    - 没有做动静分离
    - 静态文件未对国内优化
    liuxu
        32
    liuxu  
       2018-11-11 22:33:49 +08:00
    @jingyulong

    我的博客被刷 CDN 流量了,现在切到台湾了,你可以看看速度,不需要备案
    jingyulong
        33
    jingyulong  
    OP
       2018-11-11 22:43:21 +08:00
    @SukkaW 明白啦,谢谢你的建议
    jingyulong
        34
    jingyulong  
    OP
       2018-11-11 22:43:45 +08:00
    @liuxu 你站点的速度好快
    jingyulong
        35
    jingyulong  
    OP
       2018-11-11 22:47:22 +08:00
    @lostberryzz 是 Miami 的,改天试试 LA
    mytsing520
        36
    mytsing520  
    PRO
       2018-11-11 22:49:34 +08:00
    内存扩到 2G,使 Nginx 能够尽情释放,处理上能快很多
    lostberryzz
        37
    lostberryzz  
       2018-11-11 22:53:53 +08:00
    我 Vultr Location 是 NJ 的,套上 CF TFFB 在 550ms 左右,你可以试下
    h19981126g
        38
    h19981126g  
       2018-11-11 23:05:47 +08:00
    前端文件全部走国内 CDN,套 cf,再或者买个香港服务器,用香港的做转发,会快 50%左右
    jingyulong
        39
    jingyulong  
    OP
       2018-11-11 23:08:06 +08:00
    @mytsing520 我的是 Apache,2G 内存估计会快很多,现在的 mysql 512M 的内存还是有很大限制的
    jingyulong
        40
    jingyulong  
    OP
       2018-11-11 23:09:27 +08:00
    @lostberryzz 好的,我试试,你的 VPS 什么配置?
    jingyulong
        41
    jingyulong  
    OP
       2018-11-11 23:10:14 +08:00
    @h19981126g 国外服务器哪家服务商比较好一点呀
    SukkaW
        42
    SukkaW  
       2018-11-11 23:35:33 +08:00 via Android   4
    @jingyulong
    先别着急换服务器。我给几条优化建议吧。

    使用 LNMP + PHP7,不要使用 LAMP
    Gravatar 换成国内镜像
    CDNJS 换成国内镜像
    静态资源与主站分离

    这些具体措施往 Google 里丢 能出来一大批教程
        43
    lostberryzz  
       2018-11-12 00:11:19 +08:00 via iPhone
    @jingyulong TFFB 基本与性能无关,按你的需求选就好
    lostberryzz
        44
    lostberryzz  
       2018-11-12 00:12:51 +08:00 via iPhone
    当然这是你程序不是特慢的情况下,如果是未优化的 WordPress,那可能性能占的权重大一些。
    dnsaq
        45
    dnsaq  
       2018-11-12 00:19:00 +08:00 via iPhone
    这还用看?数据库查询请求缓存,直接 redis 吧,说什么静态资源 动静分离的都是扯几把犊子的
    liyuanzao
        46
    liyuanzao  
       2018-11-12 02:53:07 +08:00
    先不用上动静分离。。。

    先直接找个 WP CACHE 的插件。。。

    效果应该立竿见影。。。

    VULTR+WORDPRESS+CLOUDFLARE 我也用,速度可以很快
    bjfane
        47
    bjfane  
    PRO
       2018-11-12 06:48:32 +08:00 via iPhone
    bwh8 适合你
    zhaoyan1245
        48
    zhaoyan1245  
       2018-11-12 07:05:35 +08:00
    vultr 个人还是推荐东京节点,其他节点速度实在太慢,还有最好给 VPS 装个 BBR,这样可以最大利用 VPS 的网速
    cs8425
        49
    cs8425  
       2018-11-12 08:02:56 +08:00   2
    主要问题还是 TTFB...1.7s...
    你分别多放个静态页面、纯 php 页面(不连资料库)
    如果静态页面的 TTFB 没改善, 往 web server 查
    纯 php 页面没改善, 往 php 设定 /优化
    两者都有改善, 往你的 db 查
    imnpc
        50
    imnpc  
       2018-11-12 08:45:48 +08:00
    jetpack 插件卸载掉 国内没办法使用 WP 已被 X
    no1xsyzy
        51
    no1xsyzy  
       2018-11-12 11:11:27 +08:00
    @likuku #23 海外 https 的话,8 月开始的 SNI 检测应该不会表现在等待时间内,怎么说也是 TLS 建立阶段,甚至是两个请求……
    laoame
        52
    laoame  
       2018-11-12 13:37:14 +08:00
    还是节点的问题,跟踪一下路由跃点,你就会发现!

    或者你可以在你的 web 放一个 txt 文件,一样慢。

    tracert jingyulong.net

    然后你在看看

    tracert www.v2ex.com
    kn007
        53
    kn007  
       2018-11-12 13:41:34 +08:00   1
    换 lnmp,另外 CF 国内速度波动比较大。

    尽量选线路好的机子,即便海外也能很快。

    博客: https://kn007.net/

    美国,没有使用 cdn,速度还行。
    likuku
        54
    likuku  
       2018-11-12 13:57:55 +08:00
    @no1xsyzy #51 我是在年初 1 月时发觉这样子的,更觉得猜测是针对没备案的域名作的限制(没备案+非明文的 web 数据流,那就被砍了吧)。
    lvwzhen
        55
    lvwzhen  
       2018-11-12 14:41:21 +08:00
    Wordpress 的话可以安装 Memcached 解决缓存的问题,速度能有很大的优化
    zcxj138
        56
    zcxj138  
       2018-11-12 17:30:20 +08:00
    同一个链接刷新,最长 23s,最短 2.3s ,这已经不是 apache 或者 nginx 的问题了。
    jingyulong
        57
    jingyulong  
    OP
       2018-11-12 18:06:32+08:00
    @SukkaW 谢谢你啦,晚上我按照大家的建议试试,先做优化。
    jingyulong
        58
    jingyulong  
    OP
       2018-11-12 18:07:11 +08:00
    @lostberryzz 明白啦,谢谢
    jingyulong
        59
    jingyulong  
    OP
       2018-11-12 18:08:57 +08:00
    @dnsaq 有可能数据库的缓存不够,mysql 配置的参数一会我贴出来
    jingyulong
        60
    jingyulong  
    OP
       2018-11-12 18:10:03 +08:00
    @liyuanzao 晚上我试试这个插件,谢谢啦
    jingyulong
        61
    jingyulong  
    OP
       2018-11-12 18:11:20 +08:00
    @bjfane 我先试试优化,实在不行再换服务器
    jingyulong
        62
    jingyulong  
    OP
       2018-11-12 18:11:49 +08:00
    @zhaoyan1245 BBR 搭梯子的时候已经开启啦
    jingyulong
        63
    jingyulong  
    OP
       2018-11-12 18:12:32 +08:00
    @cs8425 好的
    jingyulong
        64
    jingyulong  
    OP
       2018-11-12 18:13:16 +08:00
    @imnpc jetpack 我用来使用 markdown 编辑器
    jsjscool
        66
    jsjscool  
       2018-11-12 18:36:16 +08:00
    VgV
        67
    VgV  
       2018-11-12 19:10:58 +08:00
    第一次打开很慢,5 秒左右。第二次打开稍微快了一些,2 秒,也许是建立通信与解密占了时间吧,毕竟你才 512M........
    h19981126g
        68
    h19981126g  
       2018-11-12 20:14:56 +08:00
    国外比较推荐 bwh 的 cn2 路线,但说句实际的,最好的还是阿里云香港,既不用备案,相应速度也好很多,建议你多关注下他们的活动,像之前的 700 三年阿里云香港 2h4g 用来做站其实很值,但被很多人喷的一文不值。。
    jingyulong
        69
    jingyulong  
    OP
       2018-11-12 22:48:15 +08:00
    @no1xsyzy https 有什么好的解决方案吗?
    yytsjq
        70
    yytsjq  
       2018-11-12 22:57:28 +08:00
    使用 Redis 缓存 HTML 页面

    Redis Page Cache
    https://wordpress.org/plugins/pj-page-cache-red/
    ioutio
        71
    ioutio  
       2018-11-12 22:57:54 +08:00
    wordpress 代码中可能有调用到某些缓慢的链接导致的,我之前遇到过谷歌字体无法加载,然后打开特别慢,通过浏览器也监测不到
    jingyulong
        72
    jingyulong  
    OP
       2018-11-12 23:19:30 +08:00
    @laoame traceroute https://jingyulong.net
    traceroute: unknown host https://jingyulong.net
    我的基本上都没反应
    jingyulong
        73
    jingyulong  
    OP
       2018-11-12 23:27:37 +08:00
    @kn007 你的网站我用我的浏览器 Disable Cache 访问,页面的 TTFB 最快 500ms 左右。多刷新几次,有时候可以用时 5s 多,不是太稳定。。。。。你用的哪家的服务器呀
    jingyulong
        74
    jingyulong  
    OP
       2018-11-12 23:28:29 +08:00
    @yytsjq 兄弟,谢啦
    jingyulong
        75
    jingyulong  
    OP
       2018-11-12 23:29:36 +08:00
    @ioutio 周末准备把这些静态资源分析下
    jingyulong
        76
    jingyulong  
    OP
       2018-11-12 23:37:49 +08:00
    大家的每一条的留言我都会一一回复的,因为回复时间间隔有限制,所以只能一次几个的回复。另外,我放了一个 test.txt 在站点上,大家可以访问这个:[点击访问]( https://jingyulong.net/test.txt),排除静态资源造成的影响。
    jingyulong
        77
    jingyulong  
    OP
       2018-11-12 23:39:12 +08:00
    jingyulong
        78
    jingyulong  
    OP
       2018-11-12 23:45:53 +08:00
    @yytsjq 插件 Redis Page Cache,听你的建议已经安装
    g5
        79
    g5  
       2018-11-13 00:17:39 +08:00 via Android
    真的很慢,上香港鸡
    liyuanzao
        80
    liyuanzao 
       2018-11-13 00:23:22 +08:00
    @jingyulong 估计你得 HTTP 配置有问题,第一次访问特别慢。。。后面稍微快一点,说明 HTTP 线程第一次可能没给够。。。
    eamon666
        81
    eamon666  
       2018-11-13 00:33:25 +08:00
    就是你的首页内容慢了。
    可能会涉及到服务端的问题,自己本地测一下试试
    和静态资源没关系。
    qianmeng
        82
    qianmeng  
       2018-11-13 06:45:31 +08:00 via Android
    我给你说一下我的设置,centos 加上宝塔面板,设置 nginx 和 php7
    php 用 memcached 和 opcache
    网络配置换 google 的 bbr,你搜一下就知道了,关键点在这里。
    vps 配置和你一样,laravel 你知道多慢的,从 5-15 秒降低到 1 秒以内,而且很抗压,
    no1xsyzy
        83
    no1xsyzy  
       2018-11-13 14:30:44 +08:00
    @jingyulong 我是否定 HTTPS 问题…… [请求发出后] 卡 2s 怎么说也不是 HTTPS 问题。
    静态资源是用 Apache 提供的吗?
    ssh 进服务器 curl 自己看一下延迟(注意远端计算延迟)
    话说 ssh 有很明显的延迟吗?没有的话可以考虑换 nginx,估计是 512MB 卡到 Apache 了。
    no1xsyzy
        84
    no1xsyzy  
       2018-11-13 14:39:25 +08:00
    @likuku 那时候可能是这样,8 月开始详情 steamcn 找 302v8 讨论,我也不知道能不能谈这种事。
    主要就是因为同 IP 不同网站(比如 CDN 什么的),但又不好弄一个跨极多域名的证书,所以就用 SNI 按照客户端请求给证书,所以中间人是可以断一次连接来求出域名的。但因为无法提供证书所以浏览器会报错。
    dif
        85
    dif  
       2018-11-13 15:31:27 +08:00
    CloudFlare Pro + Vultr JP + Redis + WP-ROCKET + opcache 感觉速度还不错。其实你多买 5 条 Page rule 也是能起到一定的加速作用。另外我还开启了 Mip 和 AMP。百度收录起来比我在阿里云的站点快多了。不只是因为 CF 的原因还是 MIP 的原因。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     864 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 22:06 PVG 06:06 LAX 14:06 JFK 17:06
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86