虎之助の徒然記

【解決?】Google Chromeが「応答時間が長すぎます」といって遅くて使えない。Windows10 1803へのアップデートが原因だった。

【概要】  Google Chromeで「応答時間が長すぎます」(ERR_TIMED_OUT)と接続が不安定になりました。この原因は、Windows 1803へのバージョンアップでした。この問題は、Cryptographic Service (CryptSvc)を再起動(あるいは停止)することで、対処できます。

1. はじめに

 メインマシンdynabook AZ77のハードディスクがお亡くなりになり、SSDに換装しました。

 幸か不幸か、リカバリーディスクからクリアインストールで、すべてのソフトを再インストールするはめになりましたが、起動も高速、他の動作もサクサクと動き、快適です。いままで、起動直後でも、搭載していた16GBのメモリのうち、10GBぐらは消費していたと思うのですが、今は2.5GB程度(どれだけ余計なプロセスが走っていたことやら)。SSDによる高速化もありますが、メモリ消費量が少なくなったことも大きく影響しているようです(それと、クラッシュ直前のHDDにアクセスしなくて済んだこと。HDDのブロック不良が多発すると、これが原因で超低速化します)。

 さて、まずは、ブラウザ(Chrome、Opera、Firefox)を入れましたが、どうもChromeとOperaの挙動がおかしい。現象としては、接続タイムアウトが頻発して、目的のサイトに繋がったり、繋がらなかったりと、速度が異常に遅く、かつ、動作が不安定です。FirefoxやEdgeでは、このような現象は起こりません。ChromeとChrome系列のOperaに特有の問題です。

 根本的な解決ではありませんが、とりあえずは、症状を回避することができましたので、今回の記事でまとめます。

2. ソフトウェアのバージョン

  • Windows10 Home (x64) 1803, ビルド:17134.191
  • Google Chrome:バージョン: 68.0.3440.75(Official Build) (64 ビット)

3. 症状

 症状は、どのサイトへの接続も不安定で、頻繁に「このサイトにアクセスできません xxxからの応答時間が長すぎます。」とメッセージが出て接続エラーとなること(エラーコードはERR_TIMED_OUT)。このエラーは、「安全な接続を確立しています...」という段階で応答がないことが原因と考えられます。

f:id:toranosuke_blog:20180802105922p:plain:w600
ERR_TIMED_OUTエラーが発生する。

f:id:toranosuke_blog:20180802105929p:plain:w400
「安全な接続を確立します...」の段階で止まる。


 このとき、Cryptographic Services(CryptSvc)のCPU使用率が高くなります(私の環境では、通常は使用率0%ですが、症状が発生すると、CPU使用率が数%へと上昇しました)。

f:id:toranosuke_blog:20180808143558p:plain
Cryptographic ServicesのCPU使用率が高くなる。

4. 原因と対処方法

4.1 原因

 これは、Windows10 1808へのアップデートによって顕在化したバグです(bug:838707)。このバグが原因で、Chrome系のブラウザ(Chrome, Opera, Chromium)でERR_TIMED_OUTが発生します。

 Windows、Chromeのどちらの不具合かは、よく分かりませんが、同じChrome系とは言っても別のブラウザ(Opera)でも、同じ問題が発生するので、Windows側の問題と推測しています。

4.2 対処方法

Google Chrome Forumに対処方法が書いてありました。

Google Chrome Forum: Chrome won't navigate to any website. Windows 10 1803 fresh install - HELP

 いろいろ書いてありますが、もっとも簡単でリスクがないCryptgraphic Services(CryptSvc)の再起動によって、当面の間はトラブル回避をしようと思います。但し、Windowsを再起動すると再発しますので、Windowsの再起動の度に、CryptSvcを再起動する必要があります。

 また、この方法では、Operaの症状を改善することはできませんでした。不具合が頻繁に再発し、その度にCryptSvcを再起動する必要があります。

4.3 Cryptographic Servicesの再起動の方法

 次の3つの方法について説明します。いずれでも動作は同じです。

  • 「タスクマネージャ」の「サービス」タブからCryptSvcを再起動。
  • 「サービス管理ツール」を開き、Cryptographic Serviceを再起動。

4.3.1 「タスクマネージャ」の「サービス」タブからCryptSvcを再起動。

f:id:toranosuke_blog:20180808155127p:plain
タスクマネージャの「サービス」タブで、CryptSvcを右クリックし、「再起動(R)」する。

4.3.2 「サービス管理ツール」を開き、Cryptographic Serviceを再起動。

「サービス管理ツール」によって、Cryptographic Servicesを再起動できます。「サービス管理ツール」は「タスクマネージャ」や「コンピュータの管理」から開くことができます。

4.3.2.1 「タスクマネージャ」から「サービス管理ツール」を開く

f:id:toranosuke_blog:20180808121610p:plain
タスクマネージャで、「サービスホスト:Cryptographic Services」→
「Cryptographic Services」で右クリックし、「サービス管理ツールを開く(O)」

4.3.2.2 「コンピュータの管理」から「サービス管理ツール」を開く

f:id:toranosuke_blog:20180808121649p:plain
Windowsのマークで右クリック→「コンピュータの管理(G)」→
「サービスとアプリケーション」→「サービス」を選択。

4.3.2.3 「サービス管理ツール」でCryptographic Serviceを再起動する

f:id:toranosuke_blog:20180808121709p:plain
「サービス管理ツール」から、「Cryptographic Services」を右クリックし、
「再起動(E)」を選択、Cryptographic Servicesを再起動する。

4.4 CPU使用率が高くなったら、CryptSvcを再起動

 Windowsを起動した後、Chromeを起動すると、CrpytSvcのCPU使用率が高くなり、接続が不安定になります。この場合、先に述べた方法で、CryptSvcを再起動すれば、正常に戻ります。

 但し、Windowsを再起動すると症状が再発する、暫くすると再発することがある、Operaでは効果がないという問題は残っています。

 CryptSvcを停止すれば、これらの問題は発生しません。しかし、CryptSvcを止めたときの副作用を理解していませんので、現状では停止ではなく、再起動で対応しようと思っています。

5. まとめ

 Google Chromeで「応答時間が長すぎます」とERR_TIMED_OUTエラーでネットへの接続が不安定になる問題の対処方法を紹介しました。日本語ページで探していましたが、見つけられず、最終的には英語のGoogle Chrome Forumでこの方法を見つけました。

 暫くは、この方法でしのいで、WindowsやChromeのバージョンアップで不具合が修正されるのを待とうと思います。

 また、他に試した対処方法については、付録Aにまとめました。1803アップデートが原因でない不具合の解決に役立つかもしれません。 同様のトラブルに遭遇した方の一助になれば、幸いです。

(2018/8/8)

(追記:2018/8/9)  CryptSvcを再起動しても、しばらくすると不具合が発生してしまいました。クリックでCryptSvcを再起動するスクリプトを書いたので、付録Cにつけておきます。使い勝手は、タスクマネージャ経由とどっこいどっこいでした(笑)

(追記:2018/9/10)  VirtualBoxでも、CryptSvcに起因する不具合が発生しました。VirtualBox(ゲストOSはUbuntu18.04)の場合は、CryptSvcを起動したままでも、CryptSvcを停止したままでも、正常起動しません。ゲストOSの起動時に、CryptSvcを再起動すると、正常動作するようになります。 (詳しくは、この記事

(追記:2018/9/10)  諸事情により、Windows10をリカバリーディスクからクリアインストールしたら、CryptSvcに起因する不具合は発生しなくなりました。
 OSのビルドは、17134.191から17134.254に上がっていますが、それで問題解消したのではないと思います。おそらく、内蔵wifiが不安定で接続が頻繁に切れていたことがが原因でCryptSvcが暴走するようになったと疑っています(今は内蔵wifiは使わないように設定しています)。

関連記事

パソコンが熱中症にならないように、購入検討中のファンクーラー5点。経験上、ファンが大きい方が回転数が低くて、静かです。
(追記:2018/8/10) E-PRANCEの冷却台を購入しました(記事は、こちら)。Amazon's Choiceでベストセラー1位が決め手です。機能的には一番安いNitawも魅力的ですが、典型的な中華品質のようです。ハズレを引かなければ半額なので儲けものだと思います(昔なら、こっちを買っていたw)。

付録A:Chromeの接続エラーの対処方法

 Chromeのネット接続の不具合の対処方法をいろいろと調べ、試しましたので、まとめます。1803アップデートに起因するChromeの不具合の改善には役立ちませんでしたが、他のトラブルには役立つかもしれません。

A.1 調べる、そして、試す

 まずは、Google先生に教えてもらいます。

 その中に示された対処法を一つ一つ試していきました。

 基本的には、設定を変更したら、Chromeを再起動して、動作確認します。動作確認後、設定は元に戻します。

A.2 ネットワーク接続の確認

 他のブラウザで、正常アクセスできるならば、ネットワーク接続の問題ではないので、確認不要です。

 もし、接続できないようならば、以下のようなことを行って、パソコン端末側の問題か、ルーター(無線LAN親機など)の問題かなど問題を特定していきますが、これについては問題なかったので、記事は省略します。

  • PowerShellで nslookup www.xxx.com が正常動作するか?
  • スマホやタブレットで、接続できるか?

A.3 Chrome特有の問題か?

 Chromeだけの問題か問題を切り分けます。

  • 他のブラウザでアクセスできるか?

 他のブラウザでアクセスできれば、Chrome特有の問題と分かります。

A.4 Chromeの設定

A.4.1 シークレットモードを使う

 シークレットモードを使うともしかしたら、アクセスできるかもしれません。

A.4.2 拡張機能をすべてオフにする

 拡張プラグインをすべてオフにします。

  • 「:」→「その他のツール(L)」→「拡張機能(E)」から、すべての拡張プラグインをオフにする。

 拡張機能の設定画面には、"chrome://extensions/"で直接指定してジャンプすることもできます。

A.4.3 Chromeのキャッシュ・閲覧履歴を消去する

 Chromeのキャッシュ・閲覧履歴を消去します。

  • 「:」→「詳細設定」→「閲覧履歴データを消去する」
f:id:toranosuke_blog:20180803120004p:plain:w400

A.4.4 Chromeを再インストールする

 Chromeを再インストールします。困ったときのクリアインストールです。

A.4.5 ブラウザのユーザープロファイルを新規作成する(未試行)

 ユーザプロファイルを削除(ディレクトリ名を変更)して、Chromeに新規のユーザープロファイルを作成させます。

・Exit Google Chrome completely.
・Enter the keyboard shortcut Windows key +E to open Windows Explorer.
・In the Windows Explorer window that appears enter the following in the
  address bar.
・Windows Vista/ Windows 7/ Windows 8/ Windows 10: 
 %LOCALAPPDATA%\Google\Chrome\User Data\
・Locate the folder called "Default" in the directory window that opens
 and rename it as "Backup default."
・Try opening Google Chrome again. A new "Default" folder is automatically
  created as you start using the browser.
・If you wish, you can transfer information from your old user profile to
 your new one. However, this action is not recommended, since a part of
 your old profile may be corrupt. With that in mind, to transfer your old
 bookmarks, copy the "Bookmarks.bak" file from the "Backup default"
 folder to your new "Default" folder. Once moved, rename the file from 
 "Bookmarks.bak" to "Bookmarks" to complete the migration. All other 
 browser data will remain in the "Backup default" folder, but you won't
 be able to transfer it to your new profile. 
 Google Chrome Help Forumより

 アンインストール、再インストールがちゃんとできていれば、新しいプロファイルになるはずなので、試してはいません。

A.5 接続の設定

A.5.1 接続先を変更

 私のネットワークの接続関係は、次の通りです。

  • ルーター(無線LAN親機)
    • ↔ パソコン(無線接続)
    • ↔ wifi中継器 ↔ パソコン(通常は無線接続、中継器とは有線接続可能)

無線は、wifiは親機と中継器がそれぞれ5GHz帯を含めて、4つのチャンネルがあります。有線は、中継器との接続になります。

 それぞれの接続先に接続しましたが、症状は変わりませんでした。

A.5.2 「LANの設定」

  • 「:」→「設定」→「詳細設定」→「プロキシ設定を開く」→「インタネットのプロパティ」→「接続」→「LANの設定(L)」→「設定を自動的に検出する」のチェックを外す。
f:id:toranosuke_blog:20180808202401p:plain:w400


 これで解決する場合があるようですが、「安全な接続を確立しています...」ではなく、「プロキシを解決しています...」の場合だけかもしれません。

A.5.3 IPv4で接続する

 IPv6で接続する場合があるようです。IPv4だけに制限して接続します(付録B参照)。

A.5.4 DNSキャッシュのクリア

  • WindowsのPowerShellから、"ipconfig /flushdns"を実行
  • chrome://net-internals/#dnsから「Clear host cache」でクリア

 症状が改善しなければ、さらに、以下も実行します(参考:Easy to Fix ERR_CONNECTION_TIMED_OUT Chrome Error

> ipconfig /flushdns
> ipconfig /registerdns (管理者特権が必要)
> ipconfig /release
> ipconfig /renew
> netsh winsock reset  (管理者特権、再起動が必要)

A.5.5 Windows Hostsファイルを確認する

 「Windows > System32 > drivers > etc」にあるhostsファイルにサイトのアドレスが書かれている場合には削除します(参考)。

 今回はコメント行以外は、何も書かれていなかったので、変更しませんでした。

A.6 ドライバーの更新

 dynabook内蔵のwifi子機(Intel Dual Band Wireless-AC7260)のドライバを更新します。

  • 「Windowsマーク」(右クリック)→「デバイスマネージャー」→「ネットワークアダプター」→「Intel Dual Band Wireless-AC7260」(右クリック)→「ドライバーの更新(P)」→「ドライバーソフトウェアの最新版を自動検索」

※:dynabook内蔵のwifiアダプタは、前々から接続が不安定であったため、これが原因でChromeがおかしくなった可能性があります。今回、BuffaloのUSBドングル型のwifi子機を購入し、こちらを使うように変更しましたが、Chromeの症状は変わりませんでした。

A.7 セキュリティソフトを確認する

 セキュリティソフトが接続を阻害する可能性もあります。

 今回は、セキュリティソフト(カスペルスキーインターネットセキュリティ)を入れる前に発生しています。セキュリティソフトは無関係です。このため、具体的な対処法については調べていません。

A.8 まとめ

 検索して出てきた対処方法を順次やっていき、途中で、Windows 1803アップデートのCryptSvcが原因であると分かったので、それ以降は調べていません。このため、ここで挙げた方法以外にも、試す価値があることは残っていると思います。但し、最後まで対処方法が分からないということもままありますので、さっさと諦めるのも一つの考えです。

付録B: IPv6での接続を制限する

B.1 pingが通らない

 接続状況を確認するために、外部のサイトにpingをしてみましたが、通りませんでした。接続の設定に問題があるかもしれません。

> ping www.google.com

www.google.com [2404:6800:400a:809::2004]に ping を送信しています 32 バイトの
データ:
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。

2404:6800:400a:809::2004 の ping 統計:
    パケット数: 送信 = 4、受信 = 0、損失 = 4 (100% の損失)、

B.2 IPv6の使用が原因

 IPv6のアドレスで接続するようなので、nslookupでIPアドレスを調べてみると、やはり、IPv6で接続をしようとしていました。

> nslookup www.google.com
サーバー:  UnKnown
Address:  240d:1a:183:8300:ce1a:faff:feb5:cf1e

権限のない回答:
名前:    www.google.com
Addresses:  2404:6800:400a:809::2004
          216.58.199.228

 nslookupで調べたIPアドレス(v4)の"216.58.199.228"でアクセスすると、

> ping  216.58.199.228

216.58.199.228 に ping を送信しています 32 バイトのデータ:
216.58.199.228 からの応答: バイト数 =32 時間 =12ms TTL=53
216.58.199.228 からの応答: バイト数 =32 時間 =12ms TTL=53
216.58.199.228 からの応答: バイト数 =32 時間 =21ms TTL=53
216.58.199.228 からの応答: バイト数 =32 時間 =12ms TTL=53

216.58.199.228 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 12ms、最大 = 21ms、平均 = 14ms

 IPv4では、正常にpingが通りました。つまり、pingは、サーバ名を引いたときに戻っているアドレスのうち、IPv6のアドレスで接続しようと試みるようです。

B.3 IPv6を使わないとpingも正常動作する

 IPv6を使わないように設定すると、pingも正常動作します。IPv6を使わない設定は次節参照。

> nslookup www.google.com
サーバー:  UnKnown
Address:  192.168.1.1

権限のない回答:
名前:    www.google.com
Addresses:  2404:6800:400a:809::2004
          172.217.161.196

> ping www.google.com

www.google.com [172.217.161.196]に ping を送信しています 32 バイトのデータ:
172.217.161.196 からの応答: バイト数 =32 時間 =12ms TTL=53
172.217.161.196 からの応答: バイト数 =32 時間 =12ms TTL=53
172.217.161.196 からの応答: バイト数 =32 時間 =12ms TTL=53
172.217.161.196 からの応答: バイト数 =32 時間 =19ms TTL=53

172.217.161.196 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 12ms、最大 = 19ms、平均 = 13ms

> ping  172.217.161.196

172.217.161.196 に ping を送信しています 32 バイトのデータ:
172.217.161.196 からの応答: バイト数 =32 時間 =14ms TTL=53
172.217.161.196 からの応答: バイト数 =32 時間 =12ms TTL=53
172.217.161.196 からの応答: バイト数 =32 時間 =12ms TTL=53
172.217.161.196 からの応答: バイト数 =32 時間 =12ms TTL=53

172.217.161.196 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 12ms、最大 = 14ms、平均 = 12ms

B.4 IPv6を使わないように設定する

  • 「ウィンドウズのマーク」→「歯車ボタン」(Windowsの設定)→「ネットワークとインターネット」→「アダプターのオプションを変更する」→(対象の接続に対して右クリック)→「プロパティ」→「インターネットプロトコルバージョン6(TCP/IPv6)」のチェックを外す。

 アダプターのオプションを変更する画面(「ネットワーク接続」)への辿り着き方には、次のような経路もあります。昔からのWindowsユーザーにはこちらの方が分かりやすいかもしれません(そうはいっても、毎回、迷子になります:-p)。

  • 「ウィンドウズのマーク」→「Windowsシステムツール」→「コントロールパネル」→「ネットワーク状態とタスクの表示」→「アダプタ設定の変更」
f:id:toranosuke_blog:20180802145433p:plain
右クリックで「プロパティ」を開く。

f:id:toranosuke_blog:20180808202622p:plain:w400
「インターネットプロトコル6(TCP/IPv6)」のチェックを外す。

付録C:CryptSvcを再起動するためのスクリプト

 クリックでCryptSvcを再起動するスクリプトを2つ作りました。一つは、スクリプトファイルが二つになってしまうのですが、ユーザーアカウント制御のクリックは1回で済みます。もう一つは、ユーザーアカウント制御のクリックは2回になりますが、スクリプトファイルは一つで済ませられます。

C.1 アカウント制御のクリックが1回で済むスクリプト

 ファイルは次の2つ。

① CryptSvcを再起動するスクリプト(restart_cryptsvc.bat)

net stop CryptSvc
net start CryptSvc

 このファイルを右クリックし、「管理者として実行(A)」して、ユーザーアカウント制御で「はい」と回答すれば、CryptSvcを再起動できます。

② restart_cryptsvc.batを管理者特権で実行するスクリプト(admin_restart_cryptsvc.bat)

set FILEPATH=%USERPROFILE%\Desktop

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process %FILEPATH%\restart_cryptsvc.bat -Verb runas"

 このスクリプトでは、デスクトップにあるrestart_cryptsvc.batを実行します。①のスクリプトが置いてある場所に応じてFILEPATHを書き換えます。

 このファイル(admin_restart_cryptsvc.bat)をダブルクリックし、ユーザーアカウント制御で「はい」と回答すれば、CryptSvcを再起動します。

C.2 アカウント制御のクリックが2回となるスクリプト

 ユーザーアカウント制御は2回となりますが、ファイルは1つになりますので、管理がしやすいです(admin_restart_cryptsvc2.bat)。

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process net -ArgumentList 'stop  CryptSvc' -Verb runas" -Wait
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process net -ArgumentList 'start CryptSvc' -Verb runas" -Wait

 待ちを入れるか否かの"-Wait"オプションは、あってもなくても構いません。このファイル(admin_restart_cryptsvc2.bat)のダブルクリックでCryptSvcを再起動します。

 'net restart CryptSvc'のようにrestart指定があれば、powershellの呼び出しは一回で済むのですが、残念ながらありません。

 powershellのスクリプトに詳しい方であれば、一つのファイルでアカウント制御の問合せ回数が1回で済むスクリプトを書けると思うのですが、あいにくpowershellのスクリプトを書いたことがないので、さっぱりわかりません。