首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

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

  •  
  •   jingyulong · 160 天前 · 4077 次点击
    这是一个创建于 160 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我用的

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

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

    点击:博客

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

    85 回复  |  直到 2018-11-13 15:31:27 +08:00
        1
    likuku   160 天前   ♥ 1
    Chrome 访问你的博客,接着 Chrome 的菜单 -》视图 -》开发者 -》开发者工具 -》 Network

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

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

    想看速度可以看我个人资料,我的博客就是这么做的,楼上说的资源大小,http2 都不是重点,重点还是主资源 TTFB 太大
        22
    likuku   160 天前   ♥ 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 后台再查查 测试期间 /慢的时候,系统性能 /网络是不是被吃满了?排除资源不够的问题。

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

    [我做网站开发也有几年了,这些基本的优化我知道的] 好了啦,我们知道你很资深了~
        23
    likuku   160 天前   ♥ 1
    年初也用 这家 512M vps 以 LNMP 跑过 wp,并没有觉得慢过。

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

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

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

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

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

    效果应该立竿见影。。。

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

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

    tracert jingyulong.net

    然后你在看看

    tracert www.v2ex.com
        53
    kn007   159 天前   ♥ 1
    换 lnmp,另外 CF 国内速度波动比较大。

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

    博客: https://kn007.net/

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

    Redis Page Cache
    https://wordpress.org/plugins/pj-page-cache-red/
        71
    ioutio   159 天前
    wordpress 代码中可能有调用到某些缓慢的链接导致的,我之前遇到过谷歌字体无法加载,然后打开特别慢,通过浏览器也监测不到
        72
    jingyulong   159 天前
    @laoame traceroute https://jingyulong.net
    traceroute: unknown host https://jingyulong.net
    我的基本上都没反应
        73
    jingyulong   159 天前
    @kn007 你的网站我用我的浏览器 Disable Cache 访问,页面的 TTFB 最快 500ms 左右。多刷新几次,有时候可以用时 5s 多,不是太稳定。。。。。你用的哪家的服务器呀
        74
    jingyulong   159 天前
    @yytsjq 兄弟,谢啦
        75
    jingyulong   159 天前
    @ioutio 周末准备把这些静态资源分析下
        76
    jingyulong   159 天前
    大家的每一条的留言我都会一一回复的,因为回复时间间隔有限制,所以只能一次几个的回复。另外,我放了一个 test.txt 在站点上,大家可以访问这个:[点击访问]( https://jingyulong.net/test.txt),排除静态资源造成的影响。
        77
    jingyulong   159 天前
        78
    jingyulong   159 天前
    @yytsjq 插件 Redis Page Cache,听你的建议已经安装🙏🏻
        79
    g5   159 天前 via Android
    真的很慢,上香港鸡
        80
    liyuanzao   159 天前
    @jingyulong 估计你得 HTTP 配置有问题,第一次访问特别慢。。。后面稍微快一点,说明 HTTP 线程第一次可能没给够。。。
        81
    eamon666   159 天前
    就是你的首页内容慢了。
    可能会涉及到服务端的问题,自己本地测一下试试
    和静态资源没关系。
        82
    qianmeng   158 天前 via Android
    我给你说一下我的设置,centos 加上宝塔面板,设置 nginx 和 php7
    php 用 memcached 和 opcache
    网络配置换 google 的 bbr,你搜一下就知道了,关键点在这里。
    vps 配置和你一样,laravel 你知道多慢的,从 5-15 秒降低到 1 秒以内,而且很抗压,
        83
    no1xsyzy   158 天前
    @jingyulong 我是否定 HTTPS 问题…… [请求发出后] 卡 2s 怎么说也不是 HTTPS 问题。
    静态资源是用 Apache 提供的吗?
    ssh 进服务器 curl 自己看一下延迟(注意远端计算延迟)
    话说 ssh 有很明显的延迟吗?没有的话可以考虑换 nginx,估计是 512MB 卡到 Apache 了。
        84
    no1xsyzy   158 天前
    @likuku 那时候可能是这样,8 月开始详情 steamcn 找 302v8 讨论,我也不知道能不能谈这种事。
    主要就是因为同 IP 不同网站(比如 CDN 什么的),但又不好弄一个跨极多域名的证书,所以就用 SNI 按照客户端请求给证书,所以中间人是可以断一次连接来求出域名的。但因为无法提供证书所以浏览器会报错。
        85
    dif   158 天前
    CloudFlare Pro + Vultr JP + Redis + WP-ROCKET + opcache 感觉速度还不错。其实你多买 5 条 Page rule 也是能起到一定的加速作用。另外我还开启了 Mip 和 AMP。百度收录起来比我在阿里云的站点快多了。不只是因为 CF 的原因还是 MIP 的原因。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   775 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 20:26 · PVG 04:26 · LAX 13:26 · JFK 16:26
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1