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, 这个库已经没人维护了, 甚是可惜. 这次自己写了一个简单的, 对于自用的几个站点, 还能兼容.