[TOC]
## start.sh
~~~
#!/bin/bash
cs=`echo ./*jar | sed 's/ /:/g'`
export JAVA_OPTS='-XX:+UseG1GC -Xms128m -Xmx128m -XX:MetaspaceSize=64M -XX:MaxGCPauseMillis=100 -XX:+UseStringDeduplication -XX:+AlwaysPreTouch -XX:StringDeduplicationAgeThreshold=3 -Djava.security.egd=file:/dev/./urandom -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=3210 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false'
nohup java -server $JAVA_OPTS -cp .:$cs net.dopan.pigframe.xxx &>/dev/null & echo $! >pid&
~~~
## 4核8G服务器的jvm参数配置
~~~
#!/bin/bash
cs=`echo ./*jar | sed 's/ /:/g'`
export JAVA_OPTS='-XX:+UseG1GC -XX:G1HeapRegionSize=16m -Xmx5440M -Xms5440M -XX:MaxMetaspaceSize=256M -XX:MetaspaceSize=256M -XX:MaxDirectMemorySize=100M -XX:ReservedCodeCacheSize=268435456 -XX:MaxGCPauseMillis=100 -XX:InitiatingHeapOccupancyPercent=45 -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=3 -XX:+AlwaysPreTouch -XX:+UseStringDeduplication -XX:StringDeduplicationAgeThreshold=3 -XX:-OmitStackTraceInFastThrow -Djava.security.egd=file:/dev/./urandom -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintTenuringDistribution -XX:+PrintClassHistogramBeforeFullGC -XX:+PrintClassHistogramAfterFullGC -Xloggc:/tmp/logs/gc_%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/logs -XX:ErrorFile=/tmp/logs/hs_error_pid%p.log -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=3210 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false'
nohup java -server $JAVA_OPTS -cp .:$cs net.dopan.pigframe.xxx &>/dev/null & echo $! >pid&
~~~
## GC 日志
* \-verbose:gc :打印 GC 日志
* PrintGCDetails : 打印详细 GC 日志
* PrintGCDateStamps:系统时间,更加可读,PrintGCTimeStamps 是 JVM 启动时间
* PrintGCApplicationStoppedTime: 打印 STW 时间
* PrintTenuringDistribution: 打印对象年龄分布,对调优 MaxTenuringThreshold 参数帮助很大
* loggc: 将以上 GC 内容输出到文件中
## OOM 时的参数:
* HeapDumpOnOutOfMemoryError:OOM 时 Dump 信息,非常有用
* HeapDumpPath: Dump 文件保存路径
* ErrorFile: 错误日志存放路径
## G1 垃圾回收器参数
* \-XX:MaxGCPauseMillis:用于设置目标停顿时间,G1 会尽力达成。
* \-XX:G1HeapRegionSize:用于设置小堆区大小,这个值为 2 的次幂,不要太大,也不要太小,如果实在不知道如何设置,建议保持默认。
* \-XX:InitiatingHeapOccupancyPercent:表示当整个堆内存使用达到一定比例(默认是 45%),并发标记阶段 就会被启动。
* \-XX:ConcGCThreads:表示并发垃圾收集器使用的线程数量,默认值随 JVM 运行的平台不同而变动,不建议修改。
* \-XX:AutoBoxCacheMax:用于加大 IntegerCache 。
* \-Djava.security.egd=file:/dev/./urandom:这个参数使用 urandom 随机生成器,在进行随机数获取时,速度会更快。
* \-XX:-OmitStackTraceInFastThrow:用于减少异常栈的输出,并进行合并。虽然会对调试有一定的困扰,但能在发生异常时显著增加性能。
* \-XX:-UseBiasedLocking: 理论上在高并发下会增加效率,这个需要实际进行观察,在无法判断的情况下,不需要配置。
## stop.sh
~~~
#!/bin/bash
PIDPATH=./pid
APPNAME=net.dopan.pigframe.xxx
if [ -f $PIDPATH ]; then
PID='cat $PIDPATH
kill -9 $PID
else
PID=$(ps -ef|grep $APPNAME |grep -v grep|awk '{print $2)')
if [ -n "$PID" ]; then
kill -9 $PID
else
echo "NOT FOUND $APPNAME"
fi
fi
~~~
- 微服务介绍
- 软件架构设计
- 系统简介
- 运行环境
- 模块介绍
- 启动部署命令参数
- 打包说明
- 开发说明
- Java8
- 认证理论
- 有网络隔离
- 无网络隔离
- token自动续签设计
- url级权限控制
- 单点登录
- 登录
- 用户名密码(+验证码)登录
- 通过openId获取token
- 通过手机号获取token
- 第三方系统接口对接
- 第三方系统单点登录
- 通用刷新token
- 账号登出接口
- 统一异常处理
- 日志埋点工具
- 审计日志
- yml自定义配置自动提示
- Redis使用
- CacheManager集成
- 搜索中心
- 网关zuul动态路由
- swagger
- 解决开发环境的服务冲突和实例乱窜
- 多租户理论
- 多租户实现
- 分布式锁
- 分布式id生成器
- 分布式事务
- 分库分表sharding-sphere
- 消息队列
- 系统幂等性
- X 实时搜索系统设计
- Spring Cloud性能调优
- 链路跟踪
- JWT的RSA非对称密钥生成
- jdk
- Oracle
- OpenJDK
- Dragonwell
- JVM介绍
- 常见JVM内存错误及解决方案
- JVM分析工具详解
- nexus
- docker
- 安装
- docker-compose安装
- 私有仓库搭建
- 指定数据储存目录
- 添加私有仓库
- 提交拉取镜像
- X 免Dockerfile文件构建项目镜像
- 持续集成部署CI/CD
- Confluence知识管理
- JIRA事务与项目跟踪软件
- Gitlab代码仓库
- Jenkins自动化部署
- SonarQube代码检测
- Rancher容器管理平台
- nacos
- 部署
- Rancher部署nacos
- 注册中心
- 配置中心
- 多环境
- 生产部署方案
- X 通过Nginx来实现环境隔离
- Sentinel详解
- 动态规则扩展
- 在生产环境中使用 Sentinel
- 启动配置项
- X 网关流控
- ELK日志系统和慢查询SQL
- docker安装
- 普通安装
- Filebeat安装部署
- ES数据定期删除
- 没数据问题排查思路
- X Logstash的grok语法调试
- 慢查询sql
- 审计日志
- Elasticsearch性能优化
- APM监控
- SkyWalking介绍
- Zipkin,Pinpoint,SkyWalking三种服务链路监控组件分析
- 服务端部署
- 客户端部署
- 日志清理
- Metrics监控
- 二进制包部署
- docker部署
- docker安装各组件监控
- Grafana仪表盘和告警配置
- JMeter压力测试工具
- 使用说明
- 分布式事务
- TX-LCN(同步)
- X SEATA(同步)
- X RocketMQ(异步)
- 消息队列
- RocketMQ
- RocketMQ安装部署
- RocketMQ常见异常处理
- SpringCloud-Stream
- RabbitMQ
- Redis
- 单机安装
- 主从复制
- 主从复制+哨兵
- cluster集群
- 持久化方案
- MySQL
- 单机安装
- 主从复制
- 主从切换
- 主主复制
- 高可用
- 分表分库
- Canal数据库日志解析消费
- Canal安装
- 实时同步数据到ElasticSearch
- FastDFS
- docker安装
- centos安装
- 项目管理系统
- 禅道
- 111