WindowsのCygwinが非常に遅い/遅延している


22

Windowsコマンドラインから開始したCygwinコマンドはすべて、実行前に10〜20秒の遅れがあり、Cygwinはまったく使用できなくなります。私はすでに成功せずに再インストールしようとしました。

Bashシェルウィンドウ内からコマンドを実行すると、正常に動作します(Bashの起動中に遅延が発生します)。ローカルPATH変数からすべてのエントリを削除しても、影響はありません。Windows 7 x64およびCygwin x64 v 1.7.34(0.285 / 5/3)を使用しています。


知らないが、cygwin.batを起動しないときのcmd.exeと同じですか?例C:\cygwin\bin>.\ls.exe <ENTER>
barlop

アップデートしてください。
yO_

回答:


15

時折、何千人ものユーザーがいるWindowsドメインで働いています。

私はベスト推測のアプローチをしたくありません。Cygwinは、必要に応じてユーザー情報をキャッシュすることを好みます。これは簡単です。

cygserverログイン時に実行するだけです。

これを適切に設定するには、cygserver-config一度だけ実行します。これcygserverにより、正しい資格情報を使用してWindowsサービスとして実行されるように設定されます。これは、管理者の Cygwinウィンドウから行います。

$ cygserver-config
Generating /etc/cygserver.conf file

Warning: The following function requires administrator privileges!

Do you want to install cygserver as service?
(Say "no" if it's already installed as service) (yes/no) yes

The service has been installed under LocalSystem account.
To start it, call `net start cygserver' or `cygrunsrv -S cygserver'.

Further configuration options are available by editing the configuration
file /etc/cygserver.conf. Please read the inline information in that
file carefully. The best option for the start is to just leave it alone.

Basic Cygserver configuration finished. Have fun!

私のcygserverために何をしますか?

Cygwinサイトのドキュメントをご覧ください。基本的には、すべてのCygwinプロセス間でIPCが機能するようにするとともに、ユーザーのキャッシュ処理を行います。

もちろんあなたの走行距離は異なるかもしれませんが、今ではこれが私の好ましい作業方法です。何年も前にやるべきだった。


これは素晴らしい!後に限り、共有/ cygdriveの通じ、このファイルへのアクセスをtime.Usingための感謝もはるかに高速になりましたと比較される前に
85fce

/usr/bin/cygserver-config: line 181: cygrunsrv: command not foundC:/cygwin64/bin上でPATH、管理者として実行している...
Troyseph

1
@Troyseph C:\cygwin64\bin\cygrunsrv.exe存在しますか?で誤ってスラッシュ(/)を使用しました%PATH%か?さは、cygrunsrvのパッケージがインストールされていますか?
bobbogo

ああ、C:\cygwin64\bin\cygrunsrv.exe存在しない、cygrunsrv: NT/W2K service initiatorパッケージをインストールし、すべてが動作しています。
トロイセフ

答えとしてcygserver-configを実行し、cygwinの動作をまったく停止しました(プロセスの開始に失敗しました)
-user174962

12

認証に関係しているようです。私にとっては、何かを実行するために40秒かかります。ただし、その後、そのプロセスツリーでのプロセス作成非常に迅速になります。

https://www.cygwin.com/faq.html#faq.using.startup-slow

だから、私は

  • ローカル認証と独自のActive Directory(AD)資格情報のキャッシュを作成しました

    $ mkpasswd -l -c >/etc/passwd
    $ mkgroup -l -c >/etc/group
    
  • これら2つのファイルを使用するためだけにCygwinに指示しました

    $ echo 'passwd: files' >/etc/nsswitch.conf
    $ echo 'group: files' >>/etc/nsswitch.conf
    

すべてのCygwinプロセスを強制終了し、再び開始しました。すべてがうまく動作し、高速になりました。Cygwin DLLファイルが更新されるたびにこのハックを削除し、どのように動作するかを確認します。

これは単なるスケッチです。少なくともバックアップを保持する必要があります。

編集

非推奨。より良い(IMHO)ソリューションについては、この質問に対する私の最近の回答を参照してください。


私のために働いた...とサービスをインストールする必要はありませんでした!
ドロイ

@bobbogoあなたの答えは私にとって一番下にあります。最後の編集では、どの答えを参照していますか?ありがとう!
jpaugh

これについて知っておくと良いのですが、「すべてのcygwinコマンド...実行前に10〜20秒の遅れがある」理由を説明することはできません。
philwalk

@philwalkはそう思う。問題は、Cygwinの起動時にがユーザーデータベースに入力する必要があることです。大きなウィンドーズドメイン内にいる場合、これには長い時間がかかります。すべてのコマンドがこの遅延に悩まされるわけではなく、プロセスツリーの最初のコマンドのみです。
bobbogo

2

以下のアップデートをお読みください。これは問題ではないことが判明しました。

断続的ではありますが、この問題の極端なバージョンに苦しんでいます。問題が存在する場合、すべてのコマンドに20秒かかり、極端な場合には数分かかります。それは数日間発生し、その後数日間消えます。ところで、私はたくさんのDRAM、SSDドライブなどを備えた非常に高速なシステムを持っています。

ようやく物事を説明するかもしれない理論の候補ができました。私はCygwinをsetup-x86_64.exeで更新しました(これはめったに行いません)が、その後非常に反応が良くなりました(文字通り、以前よりも数千倍高速になりました)。更新の終わりにリベースオールが違いをもたらしたと思います。

更新:前に見たスピードアップは明らかに偶然でした。1か月後に問題が再発したとき、これは修正されませんでした。Windows Defenderのライブ保護を無効にすると、すぐに速度低下が解決されたことがわかりました。


2
Windows Defenderのライブ保護を無効にすると、すぐにスローダウンが解決されました -既知の問題
1

1

脚注として、私はちょうど私が再構築しなければならなかったことがわかりました passwdgroup Cygwinの更新後にand ファイル。スロー動作が再び発生したため、インストールの自動リベース部分が完了するまでに数日かかりました。

(Windows 10)システムでデフォルトのnsswitch.confを変更する必要もありませんでした。

ちなみに、スローコマンドの動作は、Windowsコマンドプロンプトとポータブルアプリケーションでも示されています。一部のポータブルアプリケーションは、起動時にウィンドウを生成するのに数時間かかりました。


再構築するとはどういう意味ですか?それらの新しい、空のバージョンを作成しますか?
user13743

1

これは、この問題が私にとってどのように現れたかです。最初の20個のコマンドでは、Cygwinプロンプトで入力されたコマンドは高速でしたが、その後、急激に遅くなりました。

上記の認証修正を試しました。私にはうまくいきませんでした。

Cygwin FAQは、Cygwinはユーザー名またはグループ名のスペースを好まないと報告しています。Windowsログオン名にスペースが含まれているを参照してください。これにより問題が発生しますか?

グループ名にスペースが含まれていたため、 /etc/group、認証修正で生成されたファイルのアンダースコア。それもうまくいきませんでした。

同じ問題に関する他の投稿では、ウイルススキャナの結果と報告されています。既存のウイルススキャナー(System Center Endpoint Protection)をソフォスに置き換えました。これで問題は解決しました。

これがお役に立てば幸いです。


0

しばらくの間、cygwinでビルドの実行が遅いという問題がありました。

昨日更新することを余儀なくされ、rebaseallが単に実行に失敗するという問題に遭遇しました。これにより、他のことを掘り下げることを余儀なくされ、Trusteer Rapport / End Point Protectionがリベースオールと遅い応答時間の問題を引き起こすことが知られているという報告を見つけました。そのため、コントロールパネルの通常のWindowsプログラムのアンインストール方法で削除しました。

その後、管理者として実行されるダッシュインターフェイスからrebaseallを実行しました。

つまり、(win7)スタートメニューからダッシュを入力します。ダッシュショートカットが表示されます。右クリックして管理者として実行します。次に、起動したら次を実行します。

/ usr / bin / rebaseall -v

コーヒーを飲みに行く...出力を表示する前に数秒間座って、5分以上座って何もしない場合は、別の問題があります。

これによりリベースオールが修正されましたが、ビルドの速度も大幅に向上しました。インストールされているかどうかを確認する価値があるので、削除してみてください。


他の誰かがそれらを実行できるように、十分に詳細に実行したステップを説明できますか?…コメントに返信しないでください。 回答を編集して、より明確で完全なものにします。
スコット

Windows 10では、ダッシュの場所はでしたc:\msys64\user\bin\dash.exe。管理者として実行するには、デスクトップにショートカットを作成する必要がありました。残念ながら、これは私の遅いcygwinを修正しませんでした:(
user13743
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.