为了办理垃圾收集问题,模板中 1 个类只利用 1 个副本,被成立和生存在缓存中。监测一切,包罗 GC 操。据统计显示,间接层增加 GC 压力到达了某个水平时会显著的低落机能。
CDN Hit 。鉴于查询字符串基于文件内容举办哈希,只在有新成立时才会被再次取出。天天 3000 万到 5000 万 Hit,带宽约莫为 300GB 到 600GB。
CDN 不是用来应对 CPU 或I/O负载,而是辅佐用户更快的得到谜底
陈设
天天 5 次陈设,不去成立过大的应用。主要因为
可以直接的监督机能
尽大概最小化成立,可以事情才是重点
产物成立后再通过强大的剧本拷贝到各个网页层,每个处事器的步调是:
通过 POST 通知 HAProxy 下架某台处事器
延迟 IIS 竣事现有请求(约莫 5 秒)
遏制网站(通过同一个 PSSession 竣事所有下游)
Robocopy 文件
开启网站
通过另一个 POST 做 HAProxy Re-enable
险些所有陈设都是通过 puppet 或 DSC,进级凡是只是大幅度调解 RAID 阵列并通过 PXE boot 安装,这样做很是快速。
协作
团队
SRE (System Reliability Engineering):5 人
Core Dev(Q&A site)6-7 人
Core Dev Mobile:6 人
Careers 团队专门认真 SO Careers 产物开拓:7 人
Devops 和开拓者团结的很是细密
团队间变革很大
大部门员工长途事情
办公室主要用于销售,Denver 和 London 除外
一切平等,些许方向纽约事情者,因为面劈面有助于事情交换,可是在线事情影响也并不大
比拟可以在同一个办公室办公,他们更方向热爱产物及有才能的工程师,他们可以很好的权衡利弊
很多人因为家庭而选择长途事情,纽约是不错,可是糊口并不宽松
办公室设立在曼哈顿,那是小我私家才的降生地。数据中心不能太偏,因为常常会涉及进级
打造一个强大团队,偏幸极客。早期的微软就聚积了大量极客,因此他们征服了整个世界
Stack Overflow 社区也是个雇用的所在,他们在那寻找热爱编码、乐于助人及热爱交换的人才。
体例预算
预算是项目标基本。钱只花在为新项目成立基本设施上,如此低操作率的 web server 照旧 3 年前数据中心成立时购入。
测试
快速迭代和遗弃
很多测试都是宣布步队完成的。开拓拥有一个同样的 SQL 处事器,而且运行在沟通的 Web 层,因此机能测试并不会糟糕。
很是少的测试。Stack Overflow 并没有举办太多的单位测试,因为他们利用了大量的静态代码,尚有一个很是活泼的社区。
基本设施改变。鉴于所有对象都有双份,所以每个旧设置都有备份,并利用了一个快速妨碍规复机制。好比,keepalived 可以在负载平衡器中快速回退。
比拟按期维护,他们更愿意依赖冗余系统。SQL 备份用一个专门的处事器举办测试,只为了可以重存储。打算做每两个月一次的全数据中心妨碍规复,可能利用完全只读的第二数据中心。
每次新成果宣布都做单位测试、集成测试盒 UI 测试,这就意味着可以预知输入的产物成果测试后就会推送到孵化网站,即 meta.stackexchange(原 meta.stackoverflow)。
监督/日志
当下正在思量利用 做日志打点,今朝利用了一个专门的处事将 syslog UDP 传输到 SQL 数据库中。网页中为计时添加 header,这样就可以通过 HAProxy 来捕捉而且融合到 syslog 传输中。
Opserver 和 Realog 用于显示丈量功效。Realog 是一个日志展示系统,由 Kyle Brandt 和 Matt Jibson 利用 Go 成立。
日志通过 HAProxy 负载平衡器借助 syslog 完成,而不是 IIS,因为其成果比 IIS 更富厚。
关于云
照旧老生常谈,硬件永远比开拓者和有效率的代码自制。基于木桶效应,速度必定受限于某个短板,现有的云处事根基上都存在容量和机能限制。
假如从开始就利用云来建树 SO 说不定也会到达此刻的水准。但毫无疑问的是,假如到达同样的机能,利用云的本钱将远远高于自建数据中心。
机能至上
StackOverflow 是个重度的机能控,主页加载的时间永远节制在 50 毫秒内,当下的响应时间是 28 毫秒。
措施员热衷于低落页面加载时间以及提高用户体验。
每个独立的网络提交都予以计时和记录,这种计量可以弄清楚晋升机能需要修改的处所。