- 启动脚本增加配置
tp-provider的start.sh:
pid=`ps -ef|grep task-platform-provider-*.jar|grep -v "grep"|awk '{print $2}'`
if [ "$pid" = "" ] ; then
echo "provider is starting"
nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9180 -Xmx2g -Xms2g -Xmn256m -XX:MetaspaceSize=128m '-Djava.rmi.server.hostname=10.106.1.83' '-Dcom.sun.management.jmxremote.port=8877' '-Dcom.sun.management.jmxremote.rmi.port=8877' '-Dcom.sun.management.jmxremote.ssl=false' '-Dcom.sun.management.jmxremote.authenticate=false' -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/dumpDir/providerDump.hprof -javaagent:"/home/skywalking-agent/skywalking-agent-provider/skywalking-agent.jar" -jar task-platform-provider-*.jar --spring.config.location=config/application.yml > /dev/null 2>&1 &
else
echo "provider has already been started->$pid"
fi
其中 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9180
为远程调试参数,简介如下:
jdwp:通知JVM使用(java debug wire protocol)来运行调试环境。
- session(transport):指定了调试数据的传送方式,dt_socket是指用SOCKET模式,另外dt_shmem指用共享内存方式,其中dt_shmem只适用于窗口平台。
- server:指是否支持在服务器模式的虚拟机中。
- suspend:指明是否在调试客户端(本地)建立起来后,再执行JVM。
- address:用户自定义的,为debug端口号,不能被占用。
IDEA中远程调试需要增加启动配置,配置如下:
另外,
-Xmx2g -Xms2g -Xmn256m -XX:MetaspaceSize=128m
'-Djava.rmi.server.hostname=10.106.1.83' '-Dcom.sun.management.jmxremote.port=8877'
'-Dcom.sun.management.jmxremote.rmi.port=8877'
'-Dcom.sun.management.jmxremote.ssl=false'
'-Dcom.sun.management.jmxremote.authenticate=false'
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/home/dumpDir/providerDump.hprof
这些与JVM相关:
- -Xms 设置堆的最小空间大小。
- -Xmx 设置堆的最大空间大小。
- -Xmn:young generation(年轻代)的heap大小。一般为Xmx的 3、4 分之一。
- -XX:MetaspaceSize设置元数据区最小空间(元数据区:在JDK8中持久代(Permanent Generation)部分数据移到了元数据区(Metaspace),在JDK8中已经没有持久代。)。
- '-Djava.rmi.server.hostname=${ip_address}' 远程JVM运行的主机地址。
- '-Dcom.sun.management.jmxremote.port=${port}'
'-Dcom.sun.management.jmxremote.rmi.port=${port}'
解释如下:com.sun.management.jmxremote.port 指定端口后,除了在这个端口上会创建一个 RMI 连接器之外,还会额外创建另一个连接器,而这个额外创建的连接器的端口,就可以通过 com.sun.management.jmxremote.rmi.port 参数来指定。
当存在防火墙等网络访问限制时,可通过 com.sun.management.jmxremote.rmi.port 参数指定 RMI 连接器所使用的端口并进行开放。在这种场景下,必须设置此参数。
另外,com.sun.management.jmxremote.rmi.port 使用的端口,可以与 com.sun.management.jmxremote.port 指定的端口相同,这样仅开放一个端口就可以了。
- '-Dcom.sun.management.jmxremote.ssl=false'
默认值为true,这将启用客户端与JMX代理之间的安全套接字层(SSL)通信。将值设置为false以禁用SSL。
- '-Dcom.sun.management.jmxremote.authenticate=false'
默认值为true,启用使用用户名和密码的身份验证。将设置为false,表示不需要用户名和密码验证。
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/home/dumpDir/providerDump.hprof
在发生OOM(内存溢出)时,会在指定路径下生成堆dump文件
另外,
-javaagent:"/home/skywalking-agent/skywalking-agent-web/skywalking-agent.jar"
此参数表示skywalking相关,skywalking是分布式系统的应用程序性能监视工具,是非侵入式的。
最后,
--spring.config.location=config/application.yml
配置文件路径。
服务启动脚本常见配置说明
最新推荐文章于 2023-04-10 15:25:49 发布