nginx log.io websocket config

将nginx部署到log.io前端后发现功能虽然正常,但控制台有错误记录

接着就是刷屏式的如下请求了

猜测肯定遇到降级处理了,找到了其依赖的socket.io源码确认果然如此

那问题基本归根与nginx对于websocket这种新协议的代理问题,简单优化配置如下

可见不用新开端口服务,直接在现有的http端口通道上进行改造即可
同时附上websocket握手协议的相关记录以方便日后进行深入研究

 

odoo.py auto-reload dev自动重启服务ENOSPC系统错误解决

Odoo8
正常环境下直接–auto-reload参数运行缺库错误

pyinotify是一个Python模块,用来监测文件系统的变化
pyinotify依赖于Linux内核的inotify功能,是一个事件驱动的通知器,其通知接口通过三个系统调用从内核空间到用户空间
pyinotify结合这些系统调用,并提供一个顶级的抽象和一个通用的方式来处理这些功能

安装
pip install pyinotify

运行时错误:

Odoo9
正常环境下直接–dev参数运行日志警告

Watchdog是一个跨平台的Python库和shell工具,可以监视文件系统事件。超级好用,并且容易上手

安装
pip install watchdog

运行时错误:

Node
想起来当初刚玩node时也时常会遇到这个错误
不过大多直接sudo运行就可解决,简单理解权限问题也没有深究
但是odoo不能这么搞,源码限制:

还好从odoo9的报错信息里显而易见问题出自底层inotify对一般用户的限制
简单学习了下,得知其有个max_user_watches的内核参数限制普通用户一次最多关联监控个数。一般默认值8192,对于odoo这种大工程或稍大一点的node项目来说明显是不够用的

先通过如下方式验证:

然后通过su切换root身份动态更新配置值放大64倍

接着用不同版本的启动参数运行即可看到AutoReload watcher running成功了

最后还需要将动态修改的参数通过静态配置方式固化下来,否则每次重启还需要重复修改
Centos7下我不建议直接修改/etc/sysctl.conf文件配置,而是通过sysctl.d目录新建独立配置

然后重新启动或者使用

sysctl命令system参数立刻生效