TFS应用经验-大型项目数据仓库抽取导致的TFS应用无法访问
在超过千人使用的TFS生产环境中,每天周期性出现无法正常查看工作项白板、无法签入代码、无法进行自动化构建、无法进行报表数据的查看等情况,真是一个让人焦灼的问题。作为TFS平台支持和运维的团队,也想进了办法和方案尝试解决和减小这个问题产生的影响,经过几个月的尝试,最终还是协同微软产品技术支持中心的人,一起定位和尝试解决问题,最后把问题给解决了。
下面记录一些整个问题出现和解决的过程。
1, 出现问题的症状
问题症状大致有两大类:第一类为每天的固定时间段,在用WebPortal访问TFS程序时,浏览器一直处于加载的状态,光标或内容区的加载图片在没完没了的转圈,转那么几分钟,谁都受不了,研发的群里就炸了锅了,TFS挂掉的信息就大量抛出来了。第二类为页面出去Http500错误,页面上打出AnalysisServer无法连接等字样,其他什么都干不了了。
2, 临时处理方案
针对第一类问题,运维人员必须马上重启部署TFS的IIS应用程序,重启后程序恢复正常使用。

针对第二类问题,我们开发了一个程序,周期性访问TFS门户,遇到Http 500状态,程序自动重启TFSJobAgent服务,并将信息发送到邮件和微信。

通过上述方式,维护团队成员整体提心吊胆的过着日子,时刻要关注着邮件等,并每天定点把服务进行手工重启,以免最小频率的把问题暴露给用户。
3, 最终问题的排查和解决
上述方法总不是长久之计,在实在是无法解决的情况小,协调微软的技术支持开了一个紧急的Case支持。把各种系统日志、IIS日志、DB日志、TFS日志发过去,通过系统的分析,最终歪打正着地把让上述问题不在周期性的重现了。
解决问题的最终方法是调整TFS后台分析数据库的运行频率即可。修改方法如下:
打开参数设置WebService

修改更新分析服务频率参数

查看结果

通过设置,经过一段时间观察,TFS服务运行正常了,困扰了我们几个时间,耗费大量时间的问题得以解决。
最后来一个总结,通过这次在真实环境中使用SQl Server的Analysis Service,数据仓库到Cube中的增量处理,在大数据量的情况下,特别是维度中有较多层级关系结构的,在进行增量更新时,一定要给增量处理预留足够的时间。还有就是对于集成应用该产品的TFS或者其他产品,在支持大数据量业务的环境中,一定要考虑这个问题。要不面对这个问题时,真的可能是要浪费很多的时间和精力,走许多的弯路。
TFS应用经验-大型项目数据仓库抽取导致的TFS应用无法访问的更多相关文章
- PHP开发大型项目的一点经验
一.变量 最好是把所有的变量存储在一个数组中,这样在程序的开发中可以带来很多的方便,特别是当程序很大的时候.变量的命名就当适合自己的习惯,不管是用拼音还是英语,至少应当有一定的意义,以便适合记忆.变量 ...
- Spark大型项目实战:电商用户行为分析大数据平台
本项目主要讲解了一套应用于互联网电商企业中,使用Java.Spark等技术开发的大数据统计分析平台,对电商网站的各种用户行为(访问行为.页面跳转行为.购物行为.广告点击行为等)进行复杂的分析.用统计分 ...
- 在大型项目上,Python 是个烂语言吗
Robert Love, Google Software Engineer and Manager on Web Search. Upvoted by Kah Seng Tay, I was the ...
- 废弃fastjson!大型项目迁移Gson保姆级攻略
前言 大家好,又双叒叕见面了,我是天天放大家鸽子的蛮三刀. 在被大家取关之前,我立下一个"远大的理想",一定要在这周更新文章.现在看来,flag有用了... 本篇文章是我这一个多月 ...
- C/C++大型项目错误管理
在C/C++大型项目中,错误管理在项目中起着举足轻重的作用,以我自己的项目经验以及观摩其它项目,错误管理对项目框架以及开发效率有着非常大的影响.对于错误管理的认识大致分为三类: 刚刚開始敲代码的新手, ...
- ABP大型项目实战(2) - 调试与排错 - 日志 - 查看审计日志
这是<ABP大型项目实战>系列文章的一篇. 项目发布到生产环境后难免会有错误. 那么如何进行调试和排错呢? 我看到俱乐部里有人是直接登陆生产服务器把数据库下载到开发机器进行调试排错 ...
- 大型项目开发: 隔离 (《大规模C++程序设计》书摘)
书中第六章 隔离. 主要在撰述什么须要定义在头文件?什么应当移到编译单元中? 核心仍然是先区分接口定义与实现细节.实现细节的改变会导致客户代码的又一次编译,从逻辑上也表示与客户代码间可能存在着强耦合. ...
- 8、大型项目的接口自动化实践记录----DB分别获取预期结果、实际结果
上一篇实现数据分离升级版--从DB获取数据,以及对应的请求实现,作为一个case,还缺少了预期结果与实际结果的获取及对比.因为前面的文章已经说过接口返回值的获取及对比,所以这篇不说这块了,这篇说一下D ...
- 一步步从零开始用 webpack 搭建一个大型项目
开篇 很多人都或多或少使用过 webpack,但是很少有人能够系统的学习 webpack 配置,遇到错误的时候就会一脸懵,不知道从哪查起?性能优化时也不知道能做什么,网上的优化教程是不是符合自己的项目 ...
随机推荐
- (中等) UESTC 360 Another LCIS ,线段树+区间更新。
Description: For a sequence S1,S2,⋯,SN, and a pair of integers (i,j), if 1≤i≤j≤N and Si<Si+1<S ...
- bzoj1176: [Balkan2007]Mokia【cdq分治】
把询问搞成4个,cdq分治. #include <bits/stdc++.h> #define rep(i, a, b) for (int i = a;i <= b; i++) #d ...
- 超全!整理常用的iOS第三方资源
一:第三方插件 1:基于响应式编程思想的oc 地址:https://github.com/ReactiveCocoa/ReactiveCocoa 2:hud提示框 地址:https://github. ...
- Spring3.2新注解@ControllerAdvice
Spring3.2新注解@ControllerAdvice @ControllerAdvice,是spring3.2提供的新注解,从名字上可以看出大体意思是控制器增强.让我们先看看@Control ...
- AppBarLayout学习笔记
LinearLayout的子类 AppBarLayout要点: 功能:让子View(AppBar)可以选择他们自己的滚动行为. 注意:需要依赖CoordinatorLayout作为父容器,同时也要求一 ...
- python实现断点续传下载文件
最近的任务里有一个功能是要我从日志服务器实时跟新日志到本地,日志在不断新增内容就需要我隔一段时间从上次下载的位置继续下载,并写入本地文件上次写完的位置后面. headers = {'Range': ' ...
- 博客停更及OI退役公告
停更&&OI退役 公告 高中OI之路就这样结束了,曾经想过回在NOI跪,APIO跪,HNOI跪却从未想过会在NOIP跪! 没办法自己作死啊,CCF感觉还是很良心的混个省一回来了,看以后 ...
- [Angular Tutorial] 7-XHRs & Dependency Injection
我们受够了在应用中用硬编码的方法嵌入三部电话!现在让我们用Angular内建的叫做$http的服务来从我们的服务器获取更大的数据集吧.我们将会使用Angular的依赖注入来为PhoneListCtrl ...
- 笔记整理--socket_server
epoll精髓 - 彭帅 - 博客园 - Google Chrome (2013/10/11 20:47:52) epoll精髓 在linux的网络编程中,很长的时间都在使用select来做事件触发. ...
- KMP算法深入解析
本文主要介绍KMP算法原理.KMP算法是一种高效的字符串匹配算法,通过对源串进行一次遍历即可完成对字符串的匹配. 1.基础知识的铺垫 字符串T的前k(0 =< k <=tlen)个连续的字 ...