This is an expanded version of my talk at NginxConf 2017 on September 6, 2017. As an SRE
TCP Tuning for the Web(网站TCP调优)
华为云的一些技术文档,其中的性能调优部分值得一看
高性能前端架构
这篇文章介绍了一些使前端应用程序加载更快并提供良好用户体验的技术。
我们将研究前端的总体架构。您如何首先加载必需的资源,并最大化资源已在缓存中的概率?
无论您的页面甚至需要是客户端应用程序,还是如何优化应用程序的呈现时间,我都不会说太多。…
Nginx Unit 初探及其性能对比分析
1. Nginx Unit 初探
Nginx Unit 是一个开源的,以 Nginx 为基础、支持多语言的 Web 服务器,它支持 Python,PHP,Go 等多语言应用程序,可以在不中断服务的情况下完成部署配置更改,以多种语言运行代码。而它运行多种语言的能力是基于内部路由器进程之间的隔离,路由器进程可终止传入的 HTTP 请求,以及应用程序进程的分组,路由器进程是持久的,不重新启动。
它具有以下特征:
使用 RESTful JSON API 进行动态重配置服务器;
同时支持多语言,多版本应用;
即将支持的特性有:
动态语言的进程管理功能;
TLS 支持;
TCP,HTTP,HTTPS,HTTP/2 路由和代理。…
原PHP框架最新性能压力测试比较
PHP7.0 到7.4的性能增强
PHP的新版本的性能是不断增强的,PHP最新版本是PHP7.3,我们来写个脚本,来测试一下PHP的性能如何
#!/usr/bin/env bash test=$(cat << 'eot' $time = microtime(true); $array = []; for ($i = 0; $i < 10000; $i++) { if (!array_key_exists($i, $array)) { $array[$i] = []; } for ($j = 0; $j < 1000; $j++) { if (!array_key_exists($j,…
一通骚操作,我把SQL执行效率提高了10000000倍!
场景
我用的数据库是mysql5.6,下面简单的介绍下场景
课程表:
create table Course(
c_id int PRIMARY KEY,
name varchar(10)
)
数据100条
学生表:
create table Student(
id int PRIMARY KEY,
name varchar(10)
)
数据70000条
学生成绩表SC
CREATE table SC(
sc_id int
… 原在PHP 7.4中使用预加载–Opcache Preloading
PHP 7.4增加了预加载(Opcache Preloading)的支持,这一功能可以显著提高PHP程序的运行性能。
它是如何工作的:
- 为了预加载文件,您需要编写一个自定义PHP脚本
- 此脚本在服务器启动时执行一次
- 所有预加载的文件都在内存中可用于所有请求
- 在重新启动服务器之前,对预加载的文件所做的更改不会生效
简单来说就是把PHP代码完全加载到内存中来达到提升性能的目的。
让我们深入研究一下。…
PHP Socket 深度探索
Socket(套接字)一直是网络层的底层核心内容,也是 TCP/IP 以及 UDP 底层协议的实现通道。随着互联网信息时代的爆炸式发展,当代服务器的性能问题面临越来越大的挑战,著名的 C10K 问题(http://www.kegel.com/c10k.html)也随之出现。幸亏通过大牛们的不懈努力,区别于传统的 select/poll 的 epoll/kqueue 方式出现了,目前 linux2.6 以上的内核都普遍支持,这是 Socket 领域一项巨大的进步,不仅解决了 C10K 问题,也渐渐成为了当代互联网的底层核心技术。libevent 库就是其中一个比较出彩的项目(现在非常多的开源项目都有用到,包括 Memcached),感兴趣的朋友可以研究一下。
由于网络上系统介绍这个部分的文章并不多,而涉及 PHP 的就更少了,所以石头君在这里希望通过《Socket深度探究4PHP》这个系列给对这个领域感兴趣的读者们一定的帮助,也希望大家能和我一起对这个问题进行更深入的探讨。首先,解释一下目前 Socket 领域比较易于混淆的概念有:阻塞/非阻塞、同步/异步、多路复用等。
1、阻塞/非阻塞:这两个概念是针对 IO 过程中进程的状态来说的,阻塞 IO 是指调用结果返回之前,当前线程会被挂起;相反,非阻塞指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。…
近期评论