docker安装perf性能分析工具

大约在0.6版,privileged被引入docker。
使用该参数,container内的root拥有真正的root权限。
否则,container内的root只是外部的一个普通用户权限。
privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
甚至允许你在docker容器中启动docker容器。

debian: apt install linux-perf

docker-compose.yml

      extra_hosts:
        - "dockerhost:${DOCKER_HOST_IP}"
      environment:
        - PHP_IDE_CONFIG=${PHP_IDE_CONFIG}
        - DOCKER_HOST=tcp://docker-in-docker:2375
        - FAKETIME=${PHP_FPM_FAKETIME}
        - TZ=${WORKSPACE_TIMEZONE}
      privileged: true # 增加这一行
      depends_on:
        - workspace
      networks:
        - backend
      links:
        - docker-in-docker

相关资料

debian/ubuntu 安装和使用perf
系统级性能分析工具perf的介绍与使用

linux参数调优之swoole

连接数优化、系统内核调优

ulimit -n 文件最大打开数 单个进程能支持最大的 fd 取决于 ulimit -n 的值 参考资料

net.ipv4.tcp_mem  =   379008       505344  758016 
net.ipv4.tcp_wmem = 4096        16384   4194304
net.ipv4.tcp_rmem = 4096          87380   4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

sysctl -a 查看全部参数
sysctl -N [参数] 参数是否存在
sysctl -n [参数] 查看参数的值
sysctl -w arg=value # -w arg=value arg表示内核参数,value表示设置值。给内核参数临时设置一个值

net.ipv4.tcp_mem

#确定 TCP 栈应该如何反映内存使用;每个值的单位都是内存页(通常是 4KB)
#第一个值是内存使用的下限
#第二个值是内存压力模式开始对缓冲区使用应用压力的上限
#第三个值是内存上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。对于较大的 BDP 可以增大这些值(但是要记住,其单位是内存页,而不是字节)

net.ipv4.tcp_rmem

#与 tcp_wmem 类似,不过它表示的是为自动调优所使用的接收缓冲区的值

net.ipv4.tcp_wmem = 30000000 30000000 30000000

#为自动调优定义每个 socket 使用的内存。
#第一个值是为 socket 的发送缓冲区分配的最少字节数
#第二个值是默认值(该值会被 wmem_default 覆盖),缓冲区在系统负载不重的情况下可以增长到这个值
#第三个值是发送缓冲区空间的最大字节数(该值会被 wmem_max 覆盖)

net.core.wmem_default = 11059200

#定义默认的发送窗口大小;对于更大的 BDP 来说,这个大小也应该更大

net.core.rmem_default = 10000000

#指定了接收套接字缓冲区大小的缺省值(以字节为单位)

net.core.rmem_max = 10000000

#指定了接收套接字缓冲区大小的最大值(以字节为单位)

net.core.wmem_max = 11059200

#定义发送窗口的最大大小;对于更大的 BDP 来说,这个大小也应该更大

net.ipv4.tcp_tw_reuse 在Ubuntu中这个参数值是0(r73)

是否socket reuse,此函数的作用是Server重启时可以快速重新使用监听的端口。如果没有设置此参数,会导致server重启时发生端口未及时释放而启动失败
表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭

net.ipv4.tcp_tw_recycle 在Ubuntu中没有发现这个参数(r73)

使用socket快速回收,短连接Server需要开启此参数。此参数表示开启TCP连接中TIME-WAIT sockets的快速回收,Linux系统中默认为0,表示关闭。打开此参数可能会造成NAT用户连接不稳定,请谨慎测试后再开启。
表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭

相关资料

内核参数调整之swoole
内核参数调整之easy-swoole
TCP/IP及内核参数优化调优
linux系统怎么查看及设置内核参数

tcp_tw_reuse、tcp_tw_recycle 使用场景及注意事项

windows-注册表修改

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon #

选中Winlogon项,在其上点击右键,选择“新建 – 项”,然后把新建的项命名为SpecialAccounts。选中新建的SpecialAccounts项,按同样的方法在其下新建一个名为UserList的项
新建 – DWORD(32位)值 全名 登录界面隐藏用户

参考资料

连接池

MySQL连接池、Redis连接池 连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个.
每次建立数据库连接都需要发生TCP/IP握手, 并且发生I/O. 通过建立连接池增加复用性.  

相关资料

数据库连接池学习笔记

JMeter-开启端口线程

JMeter线程、端口限制

windows-端口查看排查

netstat -an  显示出电脑中所有被打开的端口列表

netstat -ano  显示出所有占用端口的列表

netstat -ano | findstr “80”  显示出80端口占用的详细情况

tasklist | findstr “680”    查询端口具体哪个应用占用


Windows提供给TCP/IP连接的端口为1024-5000,并且要四分钟来循环回收他们。就导致我们在短时间内跑大量的请求时将端口占满了。

  1. cmd中,用regedit打开注册表
  2. 在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下
         1)右击parameters,添加一个新的DWORD,名字为MaxUserPort
         2)然后双击MaxUserPort,输入数值数据为65534,基数选择十进制。(目前windows10-查看到的值是2710(十六进制) 转十进制后就是 10000)
  3. 然后重启电脑!重启电脑!重启电脑!

相关资料

jmeter 运行脚本报错 java.net.BindException: Address already in use
Jmeter工具做性能测试 常见的错误汇总

MySQL并发连接数

MySQL-同时申请链接数, 在MySQL的源码中,默认最大的连接数是16384

异常: SQLSTATE[08004] [1040] Too many connections 当前超出了数据库设置的最大连接数

show variables like '%max_connections%'; 最大连接

相关资料

MySQL连接处理方式及最佳并发连接数设置
mysql连接数
MySQL中too many connections超出最大连接数的处理方法
数据库中间件mysql-proxy细节
mysql服务器最大连接数怎么设置才合理