web-dev-qa-db-ja.com

WindowsのCygwinが非常に遅い/遅い

突然、Windowsコマンドラインから開始したすべてのCygwinコマンドは、実行されるまでに最大10〜20秒の遅延が生じ、Cygwinは完全に使用できなくなります。私はすでに成功せずに再インストールしようとしました。

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

25
85fce

時々、何千人ものユーザーがいるWindowsドメインで作業しています。

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

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

これを正しく設定するには、cygserver-configを1回だけ実行します。これにより、正しい資格情報を使用してWindowsサービスとして実行するようにcygserverが設定されます。 アドミニストレーター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サイトで 。基本的には、IPCがすべてのCygwinプロセス間で機能することを保証するとともに)ユーザーキャッシングを行います。

あなたの走行距離はもちろん異なるかもしれませんが、これは今私の仕事の好ましい方法です。私は何年も前にそれをしたはずです。

18
bobbogo

認証と関係があるようです。私にとって、実行するのに40秒かかります。しかしその後、プロセスの作成そのプロセスツリーでは非常に迅速に見えます。

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

だから、私は

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

    $ mkpasswd -l -c >/etc/passwd
    $ mkgroup -l -c >/etc/group
    
  • Cygwinにこれら2つのファイルを使用するように伝えました

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

私はすべてのCygwinプロセスを強制終了し、再開しました。すべてが今や素晴らしく高速に実行されます。 Cygwin DLLファイルの更新ごとにこのハックを削除し、どのように進むかを確認します。

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

編集

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

14
bobbogo

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

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

ようやく説明できる候補理論ができました。 setup-x86_64.exeを使用してCygwinを更新しただけです(これはめったに行いません)。その後、応答が非常に速くなります(文字通り、以前より数千倍高速です)。更新の最後にrebaseallが違いをもたらしたと思います。

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

2
philwalk

脚注として、Cygwinの更新後にpasswdおよびgroupファイルを再構築する必要があることがわかりました。遅い動作が再び発生したため、インストールのautorebase部分が完了するまでに数日かかりました。

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

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

2
jfdawson

このようにして、この問題が明らかになりました。最初、たとえば20の場合、Cygwinプロンプトで入力されたコマンドは高速でしたが、その後、急激に遅くなりました。

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

Cygwin FAQは、Cygwinがユーザー名またはグループ名のスペースを好まないことを報告しています。私のWindowsログオン名にスペースが含まれている、これは問題を引き起こしますか?

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

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

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

1

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

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

次に、ダッシュインターフェースからadminとしてrebaseallを実行しました。

つまり、これは、スタートメニューからダッシュ(win7)を入力することを意味します。ダッシュショートカットが表示されます。管理者として実行するには右クリックします。それが終わったら、実行します:

/ usr/bin/rebaseall -v

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

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

0
Rob