Pensieve: 1904

2019-04-28 22:28

所观所读

技术类继续在读APUE, 读到进程控制这段了, 书里着力讲了fork的使用技巧, 但是对于这个脚本语言大行其道的时代, fork这个API已经不适合日常使用了. LWN上有些相关讨论可以一读.

默克家庭医生手册仍在缓慢推进中, 进度到了12%. 豪斯医生第六季看完, 第七季开始. 不过不准备继续看了, 因为编剧们往这个不需要主线剧情的片子里强行塞了感情戏进去. 空闲时在重读二号首长.

从第一季以后就没追冰火了, 最近最终季开播, 赶在开播前看完了一个浮光掠影的前情提要片, 开始追. 目前大概认清了人, 等着看大战.

看完了飞驰人生, 没什么特别的感觉.

所玩

Skyforce Reloaded收集到了所有的金卡, 剩下的一些成就涉及到社交, 就放弃了.

塞尔达为了查看游戏进度, 去打死了加农, 发现进度40多. 屠戮之证完成了最简单的一个, 还剩石头人和独眼巨人没完成. 种子近300了, 进度45%.

月中买了饥荒. 本以为会和其他平台上一样, 发售不久后会打折, 不过塞尔达都打过两三次折了, 这个游戏价格仍是坚挺, 于是就下手了. 目前已解锁基本人物, 主要在玩WX78. 几次作死后, 目前威尔逊最好成绩是过了冬, 集齐了四件套摆上了祭坛, 准备等到第二个冬天刷步行手杖的过程中死了. 机器人一次开局就捡到了步行手杖还吃了几个零件, 不过在过野蜂巢的时候被咬死了掉了不少装备在野蜂巢旁, 不好拣. 后面一心猥琐过冬结果在拆陷阱箱子的时候被烧死了. 基本上这个移植还是和PC上一样好玩.

Sumologic误用一例

供职单位购买了Sumologic的服务, 我们目前大部分服务用ECS来跑, 为了收集这些服务的日志, 我们设计了一套方案. 我们配置好了ECS宿主上的Sumo, 在1514口启动了一个基于TCP的syslog服务. 另外, 我们要求容器里面的服务将日志写到标准输出, docker会负责将这些输出转发到Sumo的1514口. 回头这样看中文描述, 这个方案显然是有问题的, 因为我们没法保证服务的输出能够符合syslog的要求. 但是之前当我们做这套方案的时候, Cloudformation里的描述都是英文, 而且那个docker的log group是syslog: tcp://127.0.0.1:1514很是迷惑人, 尤其是使用这套方案的时候, 日志都能被送到服务端, 所以这个问题, 就埋下了.

最近我们在一个新应用里面怀疑部分日志没有被送到服务器, 通过在容器里添加一个文本日志对比确认了这一点. 调试时我重现了这个问题, 并确认就是日志格式导致的. 作为一个syslog服务器, Sumo会要求每行日志结尾有一个回车换行, 如果没有这个换行符, Sumo会认为这一行没结束. 由于这个服务监听了网络端口, 存在超时. 所以当默认的两分钟TCP超时过后, 这个解析日志流的线程会异常退出. 好在最后这条日志消息会被正常处理发送到服务器上.

真正的问题出在当这个解析进程退出, 而有新消息进入端口时, 当第一条消息进入到端口, 由于消息中缺乏换行符, 没被认为是一个有效的消息, 所以只有当第二条消息进入到端口时, 解析进程才会启动, 此时, 第一条消息会被丢弃, 第二条消息由于缺乏换行符, 会让Sumo进入又一个等待超时循环. 所以最恶劣的情况下, 这种方案会丢一半的日志.

这个问题的直接原因是对Sumo的syslog口的滥用, 以及对docker log driver机制的不了解. 解决方案可以有很多种, 这儿不再详细讨论了.

vultr下载机重置

我在美国西海岸有一台VPS, 之前做blog和BT下载用, 上面的配置本应该是用Ansible管理, 随着时间流逝, 我把blog服务迁到了Github Pages上, 上面只剩下下载机了. 迁移的过程中, 有不少手动操作, 所以机器的配置和Ansible的repo不再同步了. 这个月花了一两天的空余时间重置了这台机器, 更换了webui, 另外加上了一个rss下载服务. 目前一切都正常, 有兴趣的话, 代码库在这儿.

我还在网易工作时, 使用过的rss下载种子工具是rssdler, 这个库已经没人维护了, 甚是可惜. 这次自己写了一个简单的, 对于自用的几个站点, 还能兼容.