一, 单机性能优化基础
1. 单机时代 - 动静分离
Nginx + Tomcat 实现动静分离
优势:
1.Nginx 记录访问日志, Tomcat 关闭日志记录功能, 来提高 Tomcat 的性能.
2. 用 Nginx 做七层的处理, 比如 ssl 证书, 让 Nginx 来实现, 比如根据 url 来做判断, 如果 pc 访问 转到什么地方, 手机访转到什么地方
Nginx+PHP 实现动静分离
2. 单机时代 - 数据库分离
将 web 服务器和数据库单独部署
3. 单机时代 - 组件分离
静态服务器使用单独的服务器
静态服务器使用独立一级域名, 防止 cookie 提交
http 链接和链接之间没有相互关系的, 这个时候 引入 session, 存放在服务器端, 客户端引入 cookie, 记录 session ID
静态服务器可以使用多个二级域名提高加载速度
静态资源作为 NFS, 静态资源存放在 NFS 上
二, Socket 基础和 TCP 三次握手
1. 什么是 socket
在计算机通信领域, socket 被翻译为 "套接字", 它是计算机之间进行通信的一种约定或一种方式. 通过 socket 这种约定, 一台计算机可以接收其他计算机的数据, 也可以向其他计算机发送数据.
socket 五元组
1. 源 IP 地址
2. 源端口
3. 目的 IP 地址
4. 目的端口
5. 类型: tcp or udp
如何查看 Linux 随机端口范围?
- cat /proc/sys.NET/ipv4/ip_local_port_range
- 32768 60999
这个范围可以修改, 优化
echo "10000 61000"> /proc/sys.NET/ipv4/ip_local_port_range
2. 创建模拟 socket 连接
在 vm2 主机创建一个监听端口
[[email protected] ~]# nc -l -4 -p 9999 -k
在 vm1 主机连接端口, 并发送消息
- [[email protected] ~]# nc 192.168.100.108 9999
- qweq
在 vm2 主机查看连接状态
- [[email protected] ~]# netstat -na |grep 9999
- tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN
- tcp 0 0 192.168.100.108:9999 192.168.100.117:34492 ESTABLISHED
- [[email protected] ~]# lsof -i:9999
- COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
- nc 9241 root 3u IPv4 46442 0t0 TCP *:distinct (LISTEN)
- nc 9241 root 4u IPv4 44975 0t0 TCP vm2:distinct->192.168.100.117:34492 (ESTABLISHED)
3.TCP 三次握手四次断开
TCP 三次握手
TCP 四次断开 (基于全双工)
4.Time_wait 调优
time_wait 会占用 socket, 因此可以作为优化点
- [[email protected] ~]# cat /proc/sys.NET/ipv4/tcp_tw_recycle
- 0 # 快速销毁策略, 一般客户端为 nat 网络 不可以开启, 0 是关闭 1 是开启
- [[email protected] ~]# cat /proc/sys.NET/ipv4/tcp_tw_reuse
- 0 # 重复使用策略, 可以开启, 但是也要把 tcp_timestamps 开启, 将 0 改为 1, 即可,
- [[email protected] ~]# cat /proc/sys.NET/ipv4/tcp_timestamps
- 1 #开启时间戳, 这个需要开启
来源: http://www.bubuko.com/infodetail-3414435.html