搞定暴涨的流量

Thumbnail

2013 年左右,我司业务发展迅速,每天晚上都会面临服务器濒临崩溃情况。 我相信每个高速发展的互联网企业在某个阶段都会面临这样的情形,比如去年爆红的「足迹」。 过程往往是:线上出现故障,手机会收到报警,然后登录到服务器上去解决问题。 处理这种问题工种现在有一个时髦的名称,叫做「SRE(Site Reliability Engineer)」系统可用性工程师。 虽然我常常救火,但是我还是想尽可能避免线上发生故障。「最好的消息,就是没有消息。」 减少故障出现概率,增强系统可用性,降低故障处理时间是 SRE 的最大课题。 在这里有最常用的两个手段,一个是优化性能,一个是做好容量规划和扩展。 这里我着重讨论后者「容量规划」。 ...

2016-06-19 · alswl

一次「分答」记录

Thumbnail

尝试在团队内部发起一次类似「分答」的沟通方式,一对一面聊。 回答其他工程师的问题,这种沟通的方式暨在提供一个特定的场合,帮助加强双方了解, 解决团队中其他工程师的一些实际的问题。 在征得对方同意之后,我将他的问题和我的回答 PO 出来。 喜欢什么游戏,玩游戏的问题 喜欢和人玩游戏,不喜欢和不认识网友玩游戏 小学从红月开始玩,传奇、CS、魔兽、真三、DOTA,大学时候和舍友玩游戏,毕业后不玩 minecraft 尝试着玩过,没有玩下去,找不到人 日活的桌面游戏,三国杀等蛮喜欢 不喜欢浪费时间,怕没控制 从玩游戏里面学习什么么?不,就是纯粹享受游戏,不会想这么多 喜欢什么语言 看场合,小东西,小场景用 Python,生产环境用 Java,生产环境又有时间,考虑 Scala 只允许选一门语言,就用 Python 最吸引的特点,熟悉程度高,生产效率高,第三方库丰富,粘合性强 为 Python 做一些功能扩展?不同时期答案会不一样,目前来说,希望有一个开发效率更高的 framework;有时间的话,会考虑如何绕过底层 GIL 问题 有什么事情投入精力,铩羽而归 工具向重的人,推广 git 花了两年,推广 Restful 不利 做业务开发 leader,和 tsu、小管一起做,项目管理、团队管理没做好,没做好,有挫败感。 职业迷茫期 我作为一个学渣,并且长期以来没有人给予职业生涯规划,一直对自己未来发展有困惑 如何在无领导的情况之下,探索未来道路,规划自己工作内容?跟优秀的人聊,跟外部的人聊,看博客,看书 迷茫是客观存在的,并且可能持续存在很久,正视它 现实中一定会遇到各种挑战和困难的,用挑战和困难填充自己,丰富自己的生活 迷茫是未知,有恐惧,有兴奋。对当前的我来说,恐惧可能更多,但是要面对 职业生涯里面,前期的同质度更高,资深工程师可以会给初级工程师规划清晰一些,但是越往后期,越难规划,需要自己探索 推荐书 https://book.douban.com/people/alswl/collect?sort=rating&start=0&filter=all&mode=list&tags_sort=count 学习来源 博客,infoq 等专业信息来源 书籍 周围的人 尽可能从每天时间挤出时间阅读 生活和工作平衡点 不同的人,同一个人的不同时期所需要的平衡不一样 对自己人生期望不一样的人,平衡点不一样 对我来说,目前阶段不存在明显边界,尽可能投入工作 如何保持激情 人总是有低谷期的,不可能一直保持亢奋,除非是甲亢 短期情绪会有起伏,长期来看,保持梦想和对自己高要求,可以帮助保持激情 我有低谷期,低谷期适合反思 如何擦屁股 现实是残酷的,总有屁股要擦,自己也有脏屁股,今天要给昨天的自己擦屁股 现实中存在脏屁股,尽可能了解它,看代码、文档,设计方案,了解的人,让自己变舒服 责任心的体现,做好当下的事情;解决这样的问题,解决当前的问题;避免留下脏屁股,设计好,规划好 责任心的话很虚。一个人做擦屁股、低产值的事情,从长远来看,是错的;短期需要撑下来;并且帮助团队避免这样的事情发生 最有成就感的事情 顶着家庭压力,到上海来 在堆糖改造环境,提升自己心智水平,不害怕问题,自信,自省

2016-06-15 · alswl

海贼王和创业团队

Thumbnail

一个同事在知乎提了一个问题 如果把草帽海贼团比作一个创业团队,这个Team的组织架构是怎样的?有哪些优势,又有哪些不足? 这个话题很有趣,作为追了多年的 fans ,又是身处互联网创业团队的我要来强答一记。 海贼王的世界很大,富有个性的角色和团队也很多,恰好可以和显示世界中的互联网创业团队进行对比。 柳传志讲的好,做大事,要「建班子,定战略,带队伍」,我们就着金句来看看草帽这个团队怎么样。 产品和战略 我先讲产品和战略。 由于海贼王世界的设定,以及作为一个全年段漫画动画的原因。 海贼王世界的整体战略是较为简单,海贼团的目标都较为单一,即「找到 哥尔 D 罗杰 留下的宝藏」。 海贼团们实现目标的路径也较为单一,打斗增强战斗力,不断寻找线索,去伟大航道寻找宝藏。 ...

2016-04-27 · alswl

Windows management for hacker

Thumbnail

团队里的同学有时看见我键指如飞,可以用快捷键将 Mac 的窗口玩转于手心。他们表示酷炫非常, 心生羡慕的同时,希望掌握这门技艺,我就把使用的 Phoenix 介绍给大家。结果过了一段时间, 发现普及率并不高,本着好为人师的精神,今天我就来八一八这款优秀的桌面管理工具。 在介绍我使用的工具之前,我要先介绍一下我选择的原因和历史。 ps:配图是我长草多年的 Ergodox Infinity。(@夫人,看到这里的时候,请留步思考 5s)。 Alt+Tab = 苦难的历史 当我还年轻的时候,曾经对 Alt+Tab 这个快捷键愤慨无比,觉得这种设计虽然简单但是很蠢。 ...

2016-04-24 · alswl

技术之外

Thumbnail

这是一天一本书的第二次执行,这次选了一本比较薄的书,上周的书看了一天,脑仁疼。 在我组织团队新兵训练营(入职之后一段时间内容集中的培训)时候, 经常和新同事聊到一个词:软实力。 我将其描述为专业技能之外的能力。每个人都这种能力的解读可能会不一样, 我将其拆解为:「对工作的热情;观察力和反思能力;做计划和决策是否周全」。 这种拆解是不全面的,「多年」以后,我意识到,硬实力考衡的是专业的能力, 而软实力则是考衡人的因素。这种晚来的意识让我在一段时间里面, 将自己的工作陷入困境,并且得不到解药。 ...

2016-02-28 · alswl

一例 Timeout 故障

Thumbnail

早晨刚到公司, HAProxy 报警,Trtornis(第三方云存储网关,用来统一管理阿里云和七牛云的对象存储) 全飘红。 检查日志,并没有 ERROR 信息,但是大量 WARN 报错。 WARN [2015-12-09 11:01:02,730] org.eclipse.jetty.util.thread.QueuedThreadPool: dw{STARTED,8<=50<=50,i=0,q=1024} rejected org.eclipse.jetty.io.AbstractConne ction$2@62c021c6 WARN [2015-12-09 11:01:02,731] org.eclipse.jetty.io.SelectorManager: Could not process key for channel java.nio.channels.SocketChannel[connected local=/10. 1.1.78:8350 remote=/10.1.1.74:63290] ! java.util.concurrent.RejectedExecutionException: org.eclipse.jetty.io.AbstractConnection$2@62c021c6 ! at org.eclipse.jetty.util.thread.QueuedThreadPool.execute(QueuedThreadPool.java:362) [tritonis-shaded.jar:0.0.1-SNAPSHOT] ! at org.eclipse.jetty.io.AbstractConnection$FillingState.onEnter(AbstractConnection.java:379) ~[tritonis-shaded.jar:0.0.1-SNAPSHOT] ! at org.eclipse.jetty.io.AbstractConnection.next(AbstractConnection.java:273) ~[tritonis-shaded.jar:0.0.1-SNAPSHOT] ! at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:563) ~[tritonis-shaded.jar:0.0.1-SNAPSHOT] ! at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:82) ~[tritonis-shaded.jar:0.0.1-SNAPSHOT] ! at org.eclipse.jetty.io.SelectChannelEndPoint.onSelected(SelectChannelEndPoint.java:109) ~[tritonis-shaded.jar:0.0.1-SNAPSHOT] ! at org.eclipse.jetty.io.SelectorManager$ManagedSelector.processKey(SelectorManager.java:636) [tritonis-shaded.jar:0.0.1-SNAPSHOT] ! at org.eclipse.jetty.io.SelectorManager$ManagedSelector.select(SelectorManager.java:607) [tritonis-shaded.jar:0.0.1-SNAPSHOT] ! at org.eclipse.jetty.io.SelectorManager$ManagedSelector.run(SelectorManager.java:545) [tritonis-shaded.jar:0.0.1-SNAPSHOT] ! at org.eclipse.jetty.util.thread.NonBlockingThread.run(NonBlockingThread.java:52) [tritonis-shaded.jar:0.0.1-SNAPSHOT] ! at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) [tritonis-shaded.jar:0.0.1-SNAPSHOT] ! at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) [tritonis-shaded.jar:0.0.1-SNAPSHOT] ! at java.lang.Thread.run(Thread.java:745) [na:1.8.0_51] 这是七牛 API 调用出现问题,通过应用 Metrics API 检查 Threads: http http://A-DOMAIN:8351/threads | sort | uniq -c | sort -gr G qiniu 正常的实例: 异常的实例: 确认是七牛服务慢导致现成爆掉,但是 46 这个值来自于哪里? ...

2016-02-02 · alswl

一次艰难的 Wiki 升级

Thumbnail

公司使用 Confluence 管理自己的知识库, 现在使用的版本还是 3.0.1,而最新的 Confluence 版本已经是 5.4+。 新版本加入的一些现代化 Web 系统的新特性很吸引人(拖拽上传,可见即所得编辑), 在群众的强烈呼声下,我着手开始升级。 官方的升级路线很扯,3.0.1 的升级路线是: 3.0.1 -> 3.5.17 5.0.3 -> 5.4.4 中间两次大版本升级,第一次原因不明,第二次是更新了 markup 渲染引擎, 改为 HTML 格式类型的渲染模式。 由于一些原因,我们系统还跑在 embedded 模式下(其实就是 HyperSQL),这种大版本升级, 需要先从内置库升级到外部数据库,比如 MySQL。 ...

2016-01-12 · alswl

SS with Haproxy

Thumbnail

以前用自己的 SS,Linode 美国,后来 Linode 日本,但是始终拼不过上海电信的国际带宽。 经常不稳定,丢一半的包。 于是买了 SS 服务, 9 台服务器,自己挑觉得速度快的服务器。 但一直固定某台服务器也会偶尔出问题,导致邮件出不来,网页打不开。 需要手动切换一下服务器。 于是用 HA 做了一个本地代理,调整了一些参数,让 SS 总是有快速的服务器供选择。 结构: +-----------------+ +----------------+ | | | | | Server 1 |>>>>v >>| Mail.app | | | v ^ | | +-----------------+ v ^ +----------------+ v ^ +-----------------+ v |----------------+ +------------+ ^ +----------------+ | | v | | | | ^ | | | Server 2 |>>>>>>>>>| HAProxy |>>>>>>| SS-Client |>>>| Browser | | | ^ | | | | v | | +-----------------+ ^ +----------------+ +------------+ v +----------------+ ^ v +-----------------+ ^ v +----------------+ | | ^ v | | | Server 3 |>>>>^ v>| Evernote... | | | | | +-----------------+ +----------------+ 配置: ...

2015-11-27 · alswl

几步拥有一个安全密码

Thumbnail

给团队非开发同学写的邮件,对其他人也有些意义,遂贴出来。 这个互联网越来越不安全 https://www.baidu.com/s?wd=%E5%AF%86%E7%A0%81%E6%B3%84%E9%9C%B2%E4%BA%8B%E4%BB%B6。密码数据库泄露,黑客暴库攻击,社会工程学攻击层出不穷。我给大家介绍几个小方法,轻松提高自己各类密码的安全等级。 先给个地址,大家可以测试一下自己常用密码的复杂度:https://howsecureismypassword.net/ 认为自己电脑水平还可以的,请直接翻到文章最后。 如何管理密码 给普通用户的建议: 密码设置复杂一些,不要使用生日、日期、姓名等有意义的信息 使用一套合理的密码生成策略 重点来了,密码生成策略: 选择自己喜欢的诗词或者某句话,比如「床前明月光,疑是地上霜」,取其拼音的第一个字母 cqmygysdss 将每个句子第一个单词大写,cqmygysdss -> CqmygYsdss 加上对应网站的信息,比如 163:CqmygYsdss163,qq: CqmygYsdssqq 大功告成,你的密码安全级别提升了。 ...

2015-10-28 · alswl

怎么打日志

Thumbnail

需要解决的问题: 业务日志打太乱,没有位置和格式约束 什么情况打日志,如何避免滥用,提高日志作用 打日志最佳实践 Dropwizard 列出的打日志原则: Be human readable. Be machine parsable. Be easy for sleepy ops folks to figure out why things are pear-shaped at 3:30AM using standard UNIXy tools like tail and grep. eg.: TRACE [2010-04-06 06:42:35,271] com.example.dw.Thing: Contemplating doing a thing. DEBUG [2010-04-06 06:42:35,274] com.example.dw.Thing: About to do a thing. INFO [2010-04-06 06:42:35,274] com.example.dw.Thing: Doing a thing WARN [2010-04-06 06:42:35,275] com.example.dw.Thing: Doing a thing ERROR [2010-04-06 06:42:35,275] com.example.dw.Thing: This may get ugly. ! java.lang.RuntimeException: oh noes! ! at com.example.dw.Thing.run(Thing.java:16) ! splunk 的最佳实践: 使用清晰的键值对:key1=val1, key2=val2 对开发者易读 全部添加时间戳 使用唯一标记,比如 user_id, transaction_id 使用文本 使用开发者易用格式,比如 JSON 尽可能多加一下数据 标记调用来源,比如方法名,类名 将多行事件拆分 除了一些浅显易懂的原则,还是 dropwizard 的三条原则和解决方案靠谱。 但是两篇文章都没有告诉如果在复杂系统里面记录有用的日志,打日志生命周期是怎样的。 ...

2015-10-18 · alswl