一 JVM相关
- 禁止使用VisualVM、JProfiler 图形化工具attach到生产环境机器jvm进程
- 高峰时期,禁止使用jmap 命令,会导致 Stop the world:这种命令都需要采集堆栈信息,所以需要所有线程进入 Safepoint 并暂停,除非:该机器已经摘除流量,或机器cpu飙升,快处于崩溃
- 高峰时期,谨慎使用jstack, 和 jstat 命令,会导致 Stop the world:这种命令都需要采集堆栈信息,所以需要所有线程进入 Safepoint 并暂停。
- arthas工具的:trace命令,高并发接口慎用:
- arthas工具的:watch命令,高并发接口慎用
- arthas工具的:redefine命令,高并发接口慎用
- arthas工具的:heapdump命令,禁止使用,除非:该机器已经摘除流量,或机器cpu飙升,快处于崩溃
- arthas工具的:tt命令,高并发接口慎用
指导建议:
- 建议关闭定时让所有线程进入 Safepoint,对于微服务高并发应用,没必要定时进入 Safepoint,所以关闭 -XX:+UnlockDiagnosticVMOptions -XX:GuaranteedSafepointInterval=0
- 建议取消偏向锁:在高并发应用中,偏向锁并不能带来性能提升,反而因为偏向锁带来了很多没必要的某些线程进入Safepoint 或者 Stop the world。所以建议关闭:-XX:-UseBiasedLocking
- 建议打开循环内添加 Safepoint 参数:防止大循环 JIT 编译导致内部 Safepoint 被优化省略,导致进入 SafePoint 时间变长:-XX:+UseCountedLoopSafepoints
- 建议打开 debug 级别的 safepoint 日志:
-Xlog:safepoint=debug:file=safepoint.log:utctime,level,tags:filecount=50,filesize=100M
二 DB相关
以下命令慎用
- drop table tab_name:删除名为tab_name的数据表
- ALTER TABLE tab_name DROP PRIMARY KEY (col_name)
把主键的定义删除:慎用,如删除需要知会到相关方,比如大数据
- alter table tab_name drop col_name:删除列,慎用,如删除需要知会到相关方,比如大数据
- 修改唯一索引:慎用,如修改需要知会到相关方,比如大数据
- truncate table tab_name:清空名为tab_name的数据
三 redis相关
- key *
模糊匹配功能使用在小数据量情况下使用没什么问题,数据量大会导致 Redis 锁住及 CPU 飙升
- flushdb
删除 Redis 中当前所在数据库中的所有记录,并且此命令从不会执行失败
- flushall
删除 Redis 中所有数据库中的所有记录,不只是当前所在数据库,并且此命令从不会执行失败
- config
客户端可修改 Redis 配置
四 linux
以下命令慎用:
- rm -rf / : 强制删除根目录下所有东东
- rm -rf *: 强制删除当前目录的所有文件
- mv 文件夹 /dev/null :该 命令会移动某个‘文件夹‘到/dev/null。在Linux中 /dev/null 或 null 设备是一个特殊的文件,所有写入它的数据都会被清除,然后返回写操作成功
- mkfs.ext3 /dev/sda ,上列命令会格式化块设备‘sda’,在执行上列命令后块设备(硬盘驱动器)会被格式化
- > file :该命令常用来清空文件内容
- dd if=/dev/random of=/dev/sda
上列命令会向块设备sda写入随机的垃圾文件从而擦出数据
- zip,gzip等耗时cpu的命令,在流量高峰期,大文件时慎用