在超过千人使用的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. N-gram语言模型简单介绍

    N-gram语言模型 考虑一个语音识别系统,假设用户说了这么一句话:"I have a gun",因为发音的相似,该语音识别系统发现如下几句话都是可能的候选:1.I have a ...

  2. Android studio开多个窗口引起的问题

    1.clean 的时候,intermediates删不掉 2.出现:app:compile_DebugJavaWithJavac 没有具体错误 出现以上问题的时候只要把多余的删除,记得只留一个在当前窗 ...

  3. Java Dwr3实现消息推送步骤详解

    DWR包含两个主要的部分:允许JavaScript从WEB服务器上一个遵循了AJAX原则的Servlet中获取数据.另外一方面一个JavaScript库可以帮助网站开发人员轻松地利用获取的数据来动态改 ...

  4. 关于css中的border

    我一直以为css中的border是正方形的 像这样 因为我平时用的时候都是 border:1px solid #000,都是同一个颜色所以看不出来 当我给每一个边分别设置颜色的时候才发现 他们是以梯形 ...

  5. Python collections.defaultdict() 与 dict的使用和区别

    看样子这个文档是难以看懂了.直接看示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import collections s = [('yellow', ...

  6. [Angular Tutorial] 7-XHRs & Dependency Injection

    我们受够了在应用中用硬编码的方法嵌入三部电话!现在让我们用Angular内建的叫做$http的服务来从我们的服务器获取更大的数据集吧.我们将会使用Angular的依赖注入来为PhoneListCtrl ...

  7. bzoj3932

    3932: [CQOI2015]任务查询系统 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1326  Solved: 480[Submit][Sta ...

  8. ZOJ 1012 Mainframe

    题目大意:有一台主机,有m个cpu和n的内存,有l个任务,每个任务需消耗一定的cpu和内存,给出任务的开始时间和截止时间,完成任务可获得一定的金钱,同时提前完成有奖金,延后完成要扣钱.计算到某个时间所 ...

  9. Alamofire 4.0 迁移指南

    Alamofire 4.0 是 Alamofire 最新的一个大版本更新, 一个基于 Swift 的 iOS, tvOS, macOS, watchOS 的 HTTP 网络库. 作为一个大版本更新, ...

  10. XCode中设置字体大小

    XCode中设置字体大小 1)打开Preferences,快捷键是“Command + ,”(注意,是三个键,按住command键,然后再快速地按“+”和“,”两个键即可) 2)选择“Fonts &a ...