在超过千人使用的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. Android 中内容提供者的使用

    在Android中内容提供者主要是用于不同程序之间的数据共享.内容提供器的用法一般有两种,一种是使用现有的内容提供器来读取和操作相应程序的数据,另一种是创建自己的内容提供器,供其他的程序访问. 使用现 ...

  2. Xcode6之后创建Pch预编译文件

    在Xcode6之前,创建一个新工程xcode会在Supporting files文件夹下面自动创建一个“工程名-Prefix.pch”文件,也是一个头文件,pch头文件的内容能被项目中的其他所有源文件 ...

  3. java实现——007用两个栈实现队列

    import java.util.Stack; public class T007 { public static void main(String[] args) { Queue q = new Q ...

  4. Object修改链表

    以前学习过链表的时候由于类型的接收不同,每次要重写链表 下面修改可用链表 class Link{ private class Node{ private Object data ; private N ...

  5. 【Xilinx-LVDS读写功能实现】-00-开始

    最近用到了一款LVDS接口的摄像头,640*480灰度图像,数据速率为600Mbps,位宽10bit,DDR双边沿采样. 实现数据的采集需要用到FPGA内的SERDES模块,现在已经仿真通过了,等到上 ...

  6. drag file upload xhr 拖拽异步上传文件

    <div id="droptarget" style="width: 500px; height: 200px; background: silver"& ...

  7. vue-cli 官方模板webpack-simple的npm run dev 与npm run bulid的一些问题

    npm run dev命令后并不会在dist目录下生成build.js文件,开发环境下build.js是在运行内存中的. 在package.json的scripts属性的dev后面加上--port 8 ...

  8. Android开发:View的几种布局及实践

    引言 View的布局显示方式有下面几种:线性布局(Linear Layout).相对布局(Relative Layout).表格布局(Table Layout).网格视图(Grid View).标签布 ...

  9. JavaScript 开发工具webstrom使用指南

    本文给大家推荐了一款非常热门的javascript开发工具webstrom,着重介绍了webstrom的特色功能.设置技巧.使用心得以及快捷键汇总,非常的全面. 看到网上一篇介绍webstrom的文章 ...

  10. phpcms推荐位数据库字段详解