基准场景

首页

首页打开的逻辑:User-Gateway(Redis)-Portal(Redis,MySQL)。

分析 st cpu

st cpu 用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间。
通过mpstat命令查看宿主机的资源情况,发现有一个物理机的si和st都不低,虚拟机本身没有很高的CPU使用率

通过命令cpupower frequency-info查看cpu模式

序号 运行模式 解释
1 ondemain 按需调节,这是内核提供的功能,实现了动态频率调整,平时低速运行,当系统负载提高时,自动提高频率,这种模式除了不是很强大之外,似乎看不出什么缺点,如果是做性能的话,不建议用
2 interactive 交互模式,以CPU负载来调整运行频率,直接上最高频率,然后慢慢降低,如果是做性能的话,不建议用
3 conservative 保守模式,调整速度缓慢,可以省电,,如果是做性能的话,不建议用
4 smartass 聪明模式。在交互模式和保守模式的升级版,在保证不太差的相应前提下,做到更加省电,,如果是做性能的话,不建议用
5 performance 性能模式,只有最高频率,只是耗电量大。
7 powersave 省电模式,性能差,省电,CPU可以存活时间长点
8 userspace 用户控制模式
9 Hotplug 热插拔模式,关屏的时候,会关掉一个CPU,较省电

将cpu的模式修改为性能模式:cpupower -c all frequency-set -g performance。

为了不让机器的IO能力差成为应用的瓶颈点,做如何处理:1.把mysql的数据文件已走;2.把log移走。
网络软中断导致si cpu变高,网络带宽不高,网络中当小包过多的时候,网络带宽是难以达到线性流量的。网络带宽即便不会很高,也会导致网络软中断的增加和队列的出现。将相关应用移动到其他消耗资源少的机器上,提高服务的TPS。

BCrypt加密算法效率低,优化方式:1.更快的加密方式;2.去掉加密算法,将所有用户加载到redis中。

使用synchronized提供全局同步锁定,导致分配key时产生争用,需要使用其他的库来解决。
JDK中提供的RSA方法,是为了防范时序攻击特定设计成这样的,这样会产生死锁的情况。

从si cpu搞到NET_RX中断多的逻辑基本清楚:因为NET_RX都是网络的接收,所以NET_RX会不断往上跳。
做如下调整:

# 增加网络的队列长度
net.core.netdev_max_blocklog =10000
# 增加tomcat的队列长度为10000
server:
  port: 8083
  tomcat:
    accept-count: 10000

# 改变设备一次可接收的数据包数量
net.core.dev_weight = 128
# 控制socket读取位于等待设备队列中的数据包
net.core.busy_poll = 100 
# 控制socket使用的接收缓存区的默认大小 
net.core.rmem_default=2129920
net.core.rmem_max=2129920
# 繁忙轮询
net.core,busy_poll = 100

K8S当前使用的是Calico插件中的IPIP模式,IPIP模式和BGP的区别:

1.对于IPIP来说,套了两次IP包;在通常情况下,IP是基于MAC的,不需要网桥;BGP不是路由协议,而是矢量性协议。

你可能感兴趣的:(基准场景)