V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  gzk329  ›  全部回复第 3 页 / 共 7 页
回复总数  125
1  2  3  4  5  6  7  
还有 java 和 K8s 集群建立连接需要写个连接池吗?
我感觉是需要 不过他这个没有连接销毁的 api 但本质又是基于 okhttp 写的
为啥感觉和这个 K8s 给的 java api 好难用啊 注释基本没有 文档也基本没
@LindsayZhou 我的 java 是跑在外面的 我要和 k8s 建立连接 要一个 config 文件 里边有集群的相关配置信息 主要是怕写在 config 中的 master 节点挂掉
指的是 springboot 相关的配置文件 就是 application.yml
先读 config 中的 application.yml
config 中的 application.yml 有几项没有
就会去 jar 包中的 application.yml 读
我突然发现 好像是有这个机制的
2022 年 11 月 15 日
回复了 gzk329 创建的主题 程序员 Springboot 中 想要重启服务 该怎么写?
@wineast 脚本启动 没问题的 能重启 但是会产生多个进程 明明端口是一样的 最多只会启动一个服务 但是会产生多个进程 脚本是有这个问题 但是功能没问题
之前说的显示无法加载与 Mybatis-plus 相关的 bean 是通过 重新生成 spring 上下文的方式重启的,也就是这个 context.close();
context = SpringApplication.run(Application.class, args.getSourceArgs());
2022 年 11 月 15 日
回复了 gzk329 创建的主题 程序员 Springboot 中 想要重启服务 该怎么写?
@kwh 这个就是我上面贴的第一种方法啊 我试了 重启的时候显示无法加载与 Mybatis-plus 相关的 bean 这俩估计是有冲突
2022 年 11 月 14 日
回复了 gzk329 创建的主题 程序员 Springboot 中 想要重启服务 该怎么写?
@gzk329 kill -9 和 默认的 kill -15 都试过
2022 年 11 月 14 日
回复了 gzk329 创建的主题 程序员 Springboot 中 想要重启服务 该怎么写?
@pengyOne
`String[] commands = {BIN_BASH, "-c", "nohup sh restartWorker.sh"};`

```
pid=`jps -l | grep xxx | head -1 | awk '{print $1}'`
echo $pid
kill -9 $pid
while [[ $pid != "" ]]; do
echo '服务停止中...'
sleep 1
pid=`jps -l | grep xxx | head -1 | awk '{print $1}'`
done
echo '服务停止成功,开始重启服务...'
java -jar xxx.jar
```
脚本应该如何修改? 这个脚本只会 kill 不会启动
java 是用 Runtime.getRuntime().exec(commands); 执行的 shell 命令
2022 年 11 月 14 日
回复了 gzk329 创建的主题 程序员 Springboot 中 想要重启服务 该怎么写?
@lower 不能手动 我在程序里边 调用外部脚本 脚本中把程序关了 这个脚本还会继续执行吗?
@quicksand 我之前也怀疑 是在执行命令前 sleep 一会儿 按理说这时候命令还没有执行
但是这个方法执行的条件是 spark 作业已经进入最终态了 我怀疑是不是查到 spark 进入最终态了 然后其实它还没有执行完
yarn logs 这个命令是拿的 sparkd 的聚合日志 需要 spark 作业已经执行完
这个中间是不是有个时间差 导致的
所以我又去这个日志收集之前做了一个 sleep 好像没用 就很奇怪
@xboxv 不需要三秒,我之前测了一下 最少大概 500ms 有时可以 800ms 稳定可以
@xboxv 我的 command 就很简单的一句
String[] commands = {BIN_BASH, "-c", "yarn logs -applicationId " + applicationId};
@fengyiqiao 我试过 读取来的日志文件是空的
@senninha 这个我也试过 能读到 error 流,我的这个命令是获取 spark 作业的聚合日志,error 输出告诉我找不到日志。
但我这个逻辑是在作业程序结束后才会执行的 所以不应该获取不到日志输出的。
然后我开始想的是在异步读输出前先休眠,或者直接循环读,读到有结果才停止,但是不生效。
还有一个在这句 process = runtime.exec(commands); 之前加一个线程休眠 3s 也能解决问题?有人知道这可能是什么原因吗?是在这句之前,我的理解是命令还没有开始执行呢 先休眠三 s ,就可以执行之后的 process.waitfor 然后异步消费输出流那套逻辑了,这是为啥呀?
@Pantheoon 谢谢,不过这个好像主要是对不同环境的命令做了自动匹配,并没有处理这个问题
@fengyiqiao java 中这些本质上都是一套吧 命令里边 1>file 或者是 processBuilder 里边重定向到文件都是 走的一套逻辑,都被缓冲区大小限制的,都不行。 命令直接在 bash 中是可以执行的
还有一个在这句 process = runtime.exec(commands);打一个断点就能正常获取输出流 全局或者线程断点都 OK 因为是单线程
不打断点 就拿不到输出流
@Kasumi20 ProcessBuilder
2022 年 10 月 16 日
回复了 gzk329 创建的主题 Java docker 容器中运行的程序 怎么在它运行的时候把它标识出来?
@superrichman 这个不行吧 程序也能复用的 一个程序多次执行 会有多个容器 但程序还是那个程序 除非是在执行参数上再设定一下 然后再获取环境变量 这个环境变量得每次不同才行
1  2  3  4  5  6  7  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3102 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 29ms · UTC 13:12 · PVG 21:12 · LAX 06:12 · JFK 09:12
♥ Do have faith in what you're doing.