SEO 百科

运行时

本页目录

运行时

运行时 是接在 Web 服务器后面、真正把程序跑起来的那一层。Nginx 或 Apache 收下请求后,静态文件自己返回,动态请求转给运行时处理,运行时的形态决定这条转发链的长度[1]。这一条目管的是这一层的共同问题,具体实现另有 PHP-FPM 与 Node 运行时两篇。

三种常见形态

第一种是进程内模块,Apache 直接在自己的进程里加载语言解释器,请求进来就地处理[2]。第二种是独立进程池加协议转发,Nginx 通过 FastCGI 把请求交给 PHP-FPM 这类常驻进程组[1][3]。第三种是自己起一个常驻服务,Nginx 反向代理到本机的端口上,Node 与 Go 这类程序常这样部署[4]。

站长要盯的四件事

进程或事件循环够不够。并发上来时不够就会排队,表现为响应时间上升而不是报错。

内存与重启。常驻进程有内存增长问题,定时重启与限额是常见做法[3]。

超时链条。代理、运行时、数据库三层各有超时,最短的那个决定上限,配错会出现半截页面。

错误可见。运行时报错时页面可能返回 502 或 500,抓取端看到的是服务器错误,Google 会因此降低抓取速度[5]。

与渲染方式的分别是层次

运行时解决程序怎么被跑起来,渲染方式解决页面在哪个环节被组装成 HTML。同一台机器上两件事互相影响:服务端渲染依赖运行时的响应能力,纯客户端渲染则把压力推到浏览器与抓取端的渲染步骤[6]。

常见误用

第一种是按静态站的思路调动态站,只看带宽不看进程数。第二种是所有超时都设很大,故障时请求堆积拖垮整机。第三种是没有健康检查,进程僵死后仍在端口上应答。

附录

参见

参考资料

官方(境外)

  1. 《nginx documentation》,NGINX。
  2. 《Apache HTTP Server 2.4 Documentation》,Apache HTTP Server Project。
  3. 《PHP-FPM documentation》,PHP。
  4. 《node.js documentation》,OpenJS Foundation。
  5. 《Google 搜索中的 HTTP 与网络错误》,Google 搜索中心。
  6. 《JavaScript SEO 基础知识》,Google 搜索中心。

外部链接