Cygwin dari Windows sangat lambat / lamban


22

Tiba-tiba semua perintah Cygwin yang saya mulai dari baris perintah Windows memiliki ~ 10-20 detik sebelum dijalankan, sehingga Cygwin menjadi benar-benar tidak dapat digunakan. Saya sudah mencoba menginstal ulang tanpa hasil.

Menjalankan perintah dari dalam jendela Bash shell, berfungsi dengan baik (saat memulai Bash saya melihat lag). Menghapus semua entri dari variabel PATH lokal saya tidak memiliki pengaruh. Saya menggunakan Windows 7 x64 dan Cygwin x64 v 1.7.34 (0.285 / 5/3).


tidak tahu tetapi apakah ini sama dengan cmd.exe ketika Anda tidak memulai cygwin.bat? misC:\cygwin\bin>.\ls.exe <ENTER>
barlop

Adakah pembaruan?
yO_

Jawaban:


15

Kadang-kadang saya bekerja di domain Windows dengan ribuan pengguna.

Saya tidak ingin melakukan pendekatan tebakan terbaik. Saya lebih suka Cygwin untuk menyimpan informasi pengguna berdasarkan kebutuhan. Ternyata ini mudah dilakukan.

Cukup jalankan cygserversaat login.

Untuk mengatur ini dengan benar, jalankan cygserver-configsekali saja. Ini akan diatur cygserveruntuk dijalankan sebagai layanan Windows dengan kredensial yang benar. Lakukan ini dari jendela administrator 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!

Apa yang cygserversaya lakukan?

Lihat dokumentasi di situs Cygwin . Pada dasarnya ia melakukan hal-hal caching pengguna, bersama dengan memastikan IPC berfungsi antara semua proses Cygwin .

Jarak tempuh Anda tentu saja bervariasi, tetapi ini sekarang merupakan cara kerja pilihan saya. Seharusnya saya melakukannya bertahun-tahun yang lalu.


Ini bagus! terima kasih telah berbagi setelah sekian lama. Menggunakan akses file ini melalui / cygdrive juga jauh lebih cepat sekarang dibandingkan dengan sebelumnya
85fce

/usr/bin/cygserver-config: line 181: cygrunsrv: command not found, C:/cygwin64/binada di PATH, berjalan sebagai administrator ...
Troyseph

1
@Troyseph Apakah C:\cygwin64\bin\cygrunsrv.exeada? Sudahkah Anda menggunakan garis miring ( /) yang salah pada Anda %PATH%? Apakah paket cygrunsrv diinstal?
bobbogo

Ah, C:\cygwin64\bin\cygrunsrv.exetidak ada, instal cygrunsrv: NT/W2K service initiatorpaket dan semuanya berfungsi.
Troyseph

jalankan cygserver-config seperti pada jawaban, berhenti bekerja cygwin sama sekali (proses gagal memulai)
user174962

12

Sepertinya ada hubungannya dengan otentikasi. Bagi saya, 40 detik untuk mendapatkan sesuatu untuk dieksekusi. Namun setelah itu, proses pembuatan di pohon proses itu tampaknya cukup cepat.

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

Jadi saya

  • Membuat cache autentikasi lokal saya, dan kredensial Active Directory (AD) saya sendiri

    $ mkpasswd -l -c >/etc/passwd
    $ mkgroup -l -c >/etc/group
    
  • Memberitahu Cygwin hanya menggunakan dua file ini

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

Saya membunuh semua proses Cygwin dan mulai lagi. Semuanya sekarang berjalan dengan baik dan cepat. Saya akan menghapus retasan ini pada setiap pembaruan file DLL Cygwin dan lihat bagaimana caranya.

Ini hanya sebuah sketsa — Anda setidaknya ingin menyimpan cadangan!

EDIT

Usang. Lihat jawaban saya yang lebih baru untuk pertanyaan ini untuk solusi (IMHO) yang lebih baik.


bekerja untuk saya ... dan tidak perlu menginstal layanan!
Droj

@ Bobobogo Jawaban Anda ada di bagian bawah untuk saya. Jawaban mana yang Anda maksudkan di edit Anda di akhir? Terima kasih!
jpaugh

senang mengetahui hal ini, meskipun tidak dapat menjelaskan mengapa "Semua perintah cygwin ... memiliki jeda waktu ~ 10-20 detik sebelum dijalankan".
philwalk

@ philwalk, saya rasa tidak. Masalahnya adalah bahwa pada saat start-up Cygwin harus mengisi basis data penggunanya. Ini membutuhkan waktu lama ketika Anda berada di dalam domain windoze besar. Tidak setiap perintah mengalami penundaan ini, hanya yang pertama di pohon proses apa pun.
bobbogo

2

Baca pembaruan di bawah ini, ini ternyata bukan masalah.

Saya telah menderita versi ekstrem dari masalah ini, meskipun berselang. Ketika masalah ada, semua perintah membutuhkan waktu antara 20 detik dan dalam kasus yang paling ekstrim beberapa menit. Itu akan terjadi selama beberapa hari, dan kemudian akan hilang selama beberapa hari. BTW, saya memiliki sistem yang sangat cepat dengan banyak DRAM, drive SSD, dll.

Saya sekarang akhirnya memiliki teori kandidat yang dapat menjelaskan banyak hal. Saya baru saja memperbarui Cygwin melalui setup-x86_64.exe (yang jarang saya lakukan) dan setelah itu semuanya sangat responsif lagi (secara harfiah 1000 kali lebih cepat dari sebelumnya). Saya menduga rebaseall pada akhir pembaruan adalah apa yang membuat perbedaan.

Pembaruan: speedup yang saya lihat sebelumnya ternyata kebetulan; ketika masalah muncul kembali sebulan kemudian, ini tidak memperbaikinya. Ternyata penonaktifan perlindungan langsung Windows Defender langsung mengatasi perlambatan.


2
menonaktifkan perlindungan langsung Windows Defender secara langsung menyelesaikan masalah pelambatan - yang diketahui
gavenkoa

1

Sebagai catatan kaki, saya baru menemukan bahwa saya harus membangun kembali passwddan groupfile setelah pembaruan Cygwin. Karena perilaku lambat itu terjadi lagi, bagian autorebase dari pemasangan membutuhkan beberapa hari untuk menyelesaikannya.

Saya juga tidak perlu memodifikasi nsswitch.conf default pada sistem (Windows 10) saya.

By the way, perilaku lambat juga menunjukkan dirinya dengan command prompt Windows dan aplikasi portabel. Beberapa aplikasi portabel memerlukan waktu beberapa jam untuk menghasilkan jendela ketika dimulai.


Apa maksudmu membangun kembali mereka? Buat saja versi baru dan kosong dari mereka?
user13743

1

Inilah bagaimana masalah ini terwujud bagi saya. Untuk yang pertama, katakanlah 20, perintah yang dimasukkan di Cygwin prompt itu cepat, tapi kemudian tiba-tiba menjadi sangat lambat.

Saya mencoba memperbaiki otentikasi di atas. Itu tidak berhasil untuk saya.

FAQ Cygwin melaporkan bahwa Cygwin tidak menyukai spasi dalam nama pengguna atau grup. Lihat nama masuk Windows Saya memiliki ruang di dalamnya, apakah ini akan menyebabkan masalah? .

Nama grup saya memiliki ruang di dalamnya, jadi saya mengubahnya di /etc/groupfile yang dihasilkan dalam perbaikan otentikasi ke garis bawah. Itu juga tidak berhasil.

Posting lain untuk masalah yang sama telah melaporkan hasilnya untuk pemindai virus. Saya mengganti pemindai virus yang ada (System Center Endpoint Protection) dengan Sophos. Itu memperbaiki masalah bagi saya.

Saya harap ini membantu.


0

Saya punya masalah dengan eksekusi build yang lambat untuk sementara waktu di cygwin.

Saya terpaksa memperbarui kemarin dan mengalami masalah rebaseall hanya gagal dieksekusi. Ini memaksa saya untuk menggali hal-hal lain dan saya menemukan laporan bahwa Trusteer Rapport / End Point Protection telah diketahui menyebabkan masalah dengan rebaseall, dan waktu respons yang lambat. Jadi saya menghapusnya, melalui metode normal Windows Uninstall Programs melalui Control Panel.

Saya kemudian melakukan rebaseall dari antarmuka dasbor dijalankan sebagai admin.

Jadi ini berarti, (win7) dari dash tipe menu mulai. Pintasan dasbor akan muncul, Klik kanan untuk menjalankan sebagai administrator. Kemudian ketika sudah habis, jalankan:

/ usr / bin / rebaseall -v

Pergi untuk minum kopi ... Ini akan duduk selama beberapa detik sebelum harus menampilkan output, jika itu duduk dan tidak melakukan apa-apa selama lebih dari 5 menit, Anda memiliki masalah lain.

Ini memperbaiki rebaseall, tetapi juga secara besar-besaran meningkatkan kecepatan build saya. Patut diperiksa untuk melihat apakah Anda telah menginstalnya, coba hapus.


Bisakah Anda menjelaskan langkah yang Anda ambil dalam detail yang cukup untuk memungkinkan orang lain melakukannya? ... Tolong jangan menanggapi dalam komentar; edit  jawaban Anda untuk membuatnya lebih jelas dan lebih lengkap.
Scott

Pada windows 10, lokasi untuk dasbor adalah c:\msys64\user\bin\dash.exe. Untuk menjalankannya sebagai administrator, saya harus membuat pintasan di desktop saya untuk itu. Sayangnya, ini tidak memperbaiki cygwin saya yang lambat: (
user13743
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.