2013-09-06 21 views
8

私はVisual StudioでPHP開発を行っています。私のソリューションにはPHP、SSRS、SQL Server(SSDT)のプロジェクトが含まれています。そして私はバージョン管理のためにTFSを使用しています。だから、私の開発環境には、 "間違っている"ことがたくさんあります。Visual Studio 2012のハングアップ/ロックアップのトラブルシューティング方法

私は断続的なハングアップが発生しています。通常、クリップの約5分です。 Visual Studioは私に待機カーソルを与え、VSのどこかをクリックするとウィンドウが暗くなります。そして、私はそれを待たなければなりません。場合によってはdevenv.exeタスクを終了することもできますが、タスクを終了するのに数分かかることもあります。私が忍耐を感じているならば、私はただ待って、最終的に(約5分)VSが生き返ります。私は、たとえプロセスを終了したとしても、データやソース管理の問題などの損失を経験したことはありません。

私は時々保存します。時々私はチェックインします。ときどき私はチェックアウトします。時々私はビルドする。私は行動のどんな種類のパターンも見分けることができませんでした。

私のワークステーションのリソースはすべて、RAM、I/O、またはネットワークやCPUの問題ではありません。

この問題のトラブルシューティングを行うにはどうすればよいですか?何らかのログモードでVSを実行すると、これらのロックアップ期間中に何が長くかかるのかを特定できますか? DEVENV.EXE /ログ

私は個人的にショートカットでこれを行うだろう:実行し、Visual Studioでのロギングをオンにするには

+0

それがアドインだかどうかを確認するために、安全モードで実行し、それを: 'DEVENV.EXE/SafeMode' –

+0

ます。また、ロギングをオンに試すことができます:denenv.exe/ta.speeot.is @ –

+0

を記録 - 私は実行している場合私のプロジェクトを読み込むことはできません。PHP開発を行う拡張機能に依存しているからです。 – Shoeless

答えて

9

+3

これを読んでいる他の人には、コマンドラインでログファイル名を指定する必要があります(例:devenv.exe/log c:\ temp \ vs.log(http://msdn.microsoft.com/en- us/library/ms241272(v = vs.110).aspx) – Shoeless

+1

これは役立つリンクです... VS2010をターゲットとし、画像が壊れていますが、これは主題で見つけた最高の記事です。http:// blogs .msdn.com/b/visualstudio/archive/2010/02/24/troubleshooting-with-the-activity-log.aspx – Shoeless

+0

VSがハングしました。私はログを見て、私のLayouts-o-rama拡張にはいくつかのエラーがあることがわかりました。私はその拡張機能を無効にして以来、VSロックアップしていない! – Shoeless

4

継続的インテグレーションビルドから残った古いTFSワークスペース定義を削除することを検討してください。

大規模なTeam Foundation Serverプロジェクトツリーでも同じ問題が発生しました。 Visual Studio 2010またはVisual Studio 2012でソリューションを開くときに、必ずしもそうではない場合があります。 VS 2010は最も脆弱でした。 VS 2012はそれほど脆弱ではありませんでしたが、それでもハングアップします。

TFSサーバーマシンと基盤となるSQL Serverマシンのサーバーアクティビティを監視することで、手がかりを得ることができました。特定のクエリストアドプロシージャがSQL Serverで過度のCPU時間を使用していました。このストアドプロシージャ名は、他のユーザーのファイルチェックアウト用のTFSワークスペース定義のスキャンに関連するTFS操作にトラッキングされました。

私たちのTFS環境は3年以上使用されており、開発者ワークステーションの「ゾンビ軍」をTFSビルドエージェントホストとして使用してContinuous Integrationビルド定義を使用しています。また、メジャーリリース用の新しいTFS支店も作成しています。各ブランチには独自のビルド定義を持つ約20の独立したVisual Studioソリューションが含まれています。

各開発者ワークステーションに約2,000のTFSワークスペース定義が蓄積されました。私たちは一度に約10台のワークステーションを持っていました。

TFワークスペース/コレクション:tfservername \ COLLECTIONNAME /所有者:

Visual Studioのコマンドウィンドウを使用し、TFS管理者として実行している、私たちは「建てるユーザー」が作成したすべてのワークスペースを識別するために、このコマンドを使用し> ourbuilduser c:\ tf_ws_del。バット

我々は、このフォームに各結果行を変換するために、世界的な代替とメモ帳++エディタのマクロレコーダーを使用:

TFワークスペース/ /コレクションを削除します。tfservername \ COLLECTIONNAMEスペースWorkspaceName; ourbuilduser < C:\ yes.txt

C

:\のyes.txtが

「Y」の一行が含まれて私たちはまた、最新のTFSのブランチの名前が付いたワークスペースの削除行を削除するために、いくつかの人間の判断を使用していました。

その後、同じVisual Studioコマンドウィンドウでc:\ tfs_ws_del.batスクリプトを実行して、それが終わるのを辛抱強く待っていました。

最終結果:私たちのVisual Studioソリューションは非常に迅速にオープンします。ソース管理エクスプローラでフォルダ階層をブラウズしてもかなり高速化しています。

警告:非常に多数のワークスペースの削除操作は、基になるSQL Server上のTempDBを大量に展開する可能性があります。あなたのDBAと調整して、SQL Serverマシンのスペースを監視してください。グラフィカルなTFS管理者コンソールツールを使用してTFSコレクションを停止して再起動すると、そのTempDB領域の一部を再利用して内部の「フリーブロック」リストに戻すことができます。

0

これは、デバッグオプションで指定されたシンボルサーバーがダウンしているか、到達不能な状態になっている場合にも発生するようです...この場合、実際にはハングしませんが、各ファイルアクセスに対してタイムアウトするようです。

この問題を一時的に回避するには、ダウンしているシンボルサーバーのチェックを外します。

関連する問題