七叶笔记 » golang编程 » supervisor 守护scala进程问题解决

supervisor 守护scala进程问题解决

先来点故事寒暄下O(∩_∩)O:

Scala 一门小众语言,但是近几年跟Go LANG 一样活跃于各大论坛社区,最新的版本是2.12.3。

Scala 是一门多范式(multi-paradigm)的 编程语言 ,设计初衷是要集成面向对象编程和 函数式编程 的各种特性。

Scala 运行在 java 虚拟机上,并兼容现有的Java程序。

每种开发语言都像是一个学派,你像 python 的哲学思想是One way to do it(一种方法做一件事情),理由是对任何任务,虽然可以采用很多方法,但总有最好的一种方法,但是其实当你使用python时间长了之后会发现其实并不是“一种方法做一件事”的哲学,而是“一种方法做一百万件事情”的哲学:使用有限的数据结构(只有四个: List, Tuple, Dictionary, Sets),以及不能查看时间复杂度的访问方法,比如鼓励人们使用for x in list。但是python自身的 解释型语言 特性导致它的效率可能略逊色于其他语言。不过个人看法这个速度就好比0.1s 跟0.001s的差别,表面差了一百倍但是对于用户来说是可以接受的。

再来说java,毕竟scala是运行在 jvm 上的我们还是得说下java的优缺点。跨平台、模块化,跨平台不说了,现在大部分语言都跨平台了已经不是啥优势了,说下模块化。Java的模块化算是大公司的一个福音。接口一定义,虚拟类一定义,这些公司不再需要跟程序要一整块任务,只需要大项目分成几个子项目、子模块。换谁上都可以。但是这也貌似有点限制了程序猿的天分,即什么样的java程序猿貌似写的java代码都差不多一样无论实习生还是明星程序猿(说这个其实是为了衬托scala)。

好了来说scala。scala生成是为聪明人而设计的。scala提供多种数据结构让程序猿自己去选择。Scala相信程序猿的聪明才智,让程序猿自己选择合适的数据结构,然后再对这个选择的这些结构在算法方面做优化,不得不说scala在这方面做的蛮厉害的。scala另外的优势就是它相信程序猿的优化能力,充分发挥程序猿的天分,以至于新老程序猿可能写出来的scala完全不一样,甚至有可能都看不懂。为了追求速度,scala社区大部分在编译器上下功夫,具体的大家可以去scala社区看看,scalaque’dinque’di缺点就是语法挺复杂,学习曲线较高。。就说这么多言归正传。

supervisor的安装就不说了网上很多文档

我在启动scala应用的时候 supervisor的errorlog里报了一个错误如下:

其实看到charset以及io流我猜的方向也是 编码 问题,再者发现这个程序要调用一个文件,google了很多文档 中英文的都看了,都说编码问题,没办法我也不确定能否解决就先让RD在加载这个文件的时候制定下编码,deploy,再启动测试发现还未解决问题。

查看操作系统编码:

#locale

LANG=en_US. UTF-8  LANGUAGE=en_US: LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL= 

编码是UTF-8 没问题

最后我决定修改supervisor关于启动这个程序的config文件 ,制定下编码( -Dfile. encoding =UTF-8),测试成功,贴出我supervisor里配置的这个程序的conf文件

[program:transform]

command=/root/app/transform-1.0.0-8000/ bin /transform -J-Xms4g -J-Xmx4g -J-XX:+HeapDumpOnOutOfMemoryError -J-server -Dhttp.port=8000 -Dconfig.resource=application-prd.conf -Dlogger.resource=logback-prd.xml -Dfile.encoding=UTF-8

directory =/root/app/transform-1.0.0-8000/

process_name=%(program_name)s

umask =022

priority=100

autostart=true

autorestart=true

startsecs=10

startretries=3

stopsignal=TERM

stopwaitsecs=10

stopasgroup=false

killasgroup=false

user=root

redirect_stderr=false

stdout_logfile=NONE

stdout_logfile_maxbytes=100MB

stdout_logfile_backups=10

stdout_events_enabled=false

stderr_logfile=/mnt/data/logs/transform/error.log

stderr_logfile_maxbytes=100MB

stderr_logfile_backups=10

stderr_events_enabled=false

相关文章