2018-8-2 解决错误: invalid byte sequence in US-ASCII (ArgumentError)
这篇文章是什么
讲如何解决 invalid byte sequence in US-ASCII (ArgumentError)
问题来源
Ruby on Rails 5 + Puma 遇到了这个问题。
问题具体症状
短描述:
puma 重启异常缓慢
长描述
puma 启动之后,我写了新代码需要部署新版本到服务器。
那么为了无缝部署(0 downtime deployment)就发送 phased-restart 让 puma 重启。
此时出现问题,puma 会占用 100% CPU,持续几分钟。
然后 timeout kill worker。有时候重启成功有时候重启失败。
总之整个部署的体验非常糟糕。
解决方法
先看日志
/var/www/witticism.com/shared/log$ tail -f puma.stderr.log
我在 /var/www/witticism.com/shared/log
目录下运行 tail -f puma.stderr.log
命令。
结果如下:
错误信息:
invalid byte sequence in US-ASCII (ArgumentError)
尝试1(失败)
https://stackoverflow.com/questions/5286117/incompatible-character-encodings-ascii-8bit-and-utf-8
绿框这两个试了不管用。
尝试2(成功)
编辑 ~/.profile 文件
vim ~/.profile
然后添加如下几行
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
之后我再 mina deploy --verbose
然后让 puma 重启,一下就好了,非常快,3秒吧。
其实就是编码问题。