在超过千人使用的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应用无法访问的更多相关文章

  1. PHP开发大型项目的一点经验

    一.变量 最好是把所有的变量存储在一个数组中,这样在程序的开发中可以带来很多的方便,特别是当程序很大的时候.变量的命名就当适合自己的习惯,不管是用拼音还是英语,至少应当有一定的意义,以便适合记忆.变量 ...

  2. Spark大型项目实战:电商用户行为分析大数据平台

    本项目主要讲解了一套应用于互联网电商企业中,使用Java.Spark等技术开发的大数据统计分析平台,对电商网站的各种用户行为(访问行为.页面跳转行为.购物行为.广告点击行为等)进行复杂的分析.用统计分 ...

  3. 在大型项目上,Python 是个烂语言吗

    Robert Love, Google Software Engineer and Manager on Web Search. Upvoted by Kah Seng Tay, I was the ...

  4. 废弃fastjson!大型项目迁移Gson保姆级攻略

    前言 大家好,又双叒叕见面了,我是天天放大家鸽子的蛮三刀. 在被大家取关之前,我立下一个"远大的理想",一定要在这周更新文章.现在看来,flag有用了... 本篇文章是我这一个多月 ...

  5. C/C++大型项目错误管理

    在C/C++大型项目中,错误管理在项目中起着举足轻重的作用,以我自己的项目经验以及观摩其它项目,错误管理对项目框架以及开发效率有着非常大的影响.对于错误管理的认识大致分为三类: 刚刚開始敲代码的新手, ...

  6. ABP大型项目实战(2) - 调试与排错 - 日志 - 查看审计日志

    这是<ABP大型项目实战>系列文章的一篇.   项目发布到生产环境后难免会有错误. 那么如何进行调试和排错呢?   我看到俱乐部里有人是直接登陆生产服务器把数据库下载到开发机器进行调试排错 ...

  7. 大型项目开发: 隔离 (《大规模C++程序设计》书摘)

    书中第六章 隔离. 主要在撰述什么须要定义在头文件?什么应当移到编译单元中? 核心仍然是先区分接口定义与实现细节.实现细节的改变会导致客户代码的又一次编译,从逻辑上也表示与客户代码间可能存在着强耦合. ...

  8. 8、大型项目的接口自动化实践记录----DB分别获取预期结果、实际结果

    上一篇实现数据分离升级版--从DB获取数据,以及对应的请求实现,作为一个case,还缺少了预期结果与实际结果的获取及对比.因为前面的文章已经说过接口返回值的获取及对比,所以这篇不说这块了,这篇说一下D ...

  9. 一步步从零开始用 webpack 搭建一个大型项目

    开篇 很多人都或多或少使用过 webpack,但是很少有人能够系统的学习 webpack 配置,遇到错误的时候就会一脸懵,不知道从哪查起?性能优化时也不知道能做什么,网上的优化教程是不是符合自己的项目 ...

随机推荐

  1. jqGrid的搜索框下拉

    当需要在jqGrid的搜索框里配置搜索条件时,如下拉,日期等,代码如下: datePick = function(elem) { jQuery(elem). } colNames : [ " ...

  2. EF LINQ根据某个字段去除重复行

    1.ydc.GameScore.OrderByDescending(o => o.Score).GroupBy(ic => ic.UserPhone).Select(g => g.F ...

  3. iOS Socket第三方开源类库 ----AsyncSocket

    假如你也是一个java程序员,而你又不是很懂Socket. 下面我的这篇文章也许能帮助你一些. http://xiva.iteye.com/blog/993336 首先我们写好上面文章中的server ...

  4. ASIHTTPRequest异步请求

    我们运行程序,如果网速很慢,查询的时候会一直黑屏,直到请求结束画面才出现,这样用户体验很不好.因此同步请求一般只是在某个子线 程中使用,而不在主线程中使用.异步请求的用户体验要比同步请求好,因此一般情 ...

  5. php中设置时区

    第一种办法:在php.ini 中设置:date.timezone=Asia/Shanghai(注意不加单引号或双引号) 第二种办法:在程序中ini_set('date.timezone','Asia/ ...

  6. DWR3.0框架入门(1) —— 实现ajax

    框架简介:DWR(Direct Web Remoting)      是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏 ...

  7. 浅谈MySQL分表

    关于分表:顾名思义就是一张数据量很大的表拆分成几个表分别进行存储. 我们先来大概了解以下一个数据库执行SQL的过程: 接收到SQL --> 放入SQL执行队列 --> 使用分析器分解SQL ...

  8. HTTP协议快速入门

    一.定义 The Hypertext Transfer Protocol (HTTP) is an application protocol for distributed, collaborativ ...

  9. 利用python 实现微信公众号群发图片与文本消息功能

    在微信公众号开发中,使用api都要附加access_token内容.因此,首先需要获取access_token.如下: #获取微信access_token def get_token(): paylo ...

  10. js原生继承之——组合式继承实例

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...