Windows的Cygwin速度很慢/很慢


22

突然,我从Windows命令行启动的所有Cygwin命令在执行之前都有大约10-20秒的延迟,因此Cygwin变得完全不可用。我已经尝试过重新安装,但没有成功。

从Bash shell窗口中执行命令可以正常工作(启动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 2015年

有任何更新吗?
10

Answers:


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站点上查看文档。基本上,它负责用户缓存内容,并确保IPC在所有Cygwin进程之间都能正常工作。

当然,您的里程可能会有所不同,但这是我首选的工作方式。我应该在多年前完成。


这很棒!感谢您经过这么长时间的共享。与以前相比,通过/ cygdrive访问此文件的速度现在也要快得多
85fce 2017年

/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软件包,一切正常。
Troyseph

按照答案运行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
    
  • 告诉Cygwin仅使用这两个文件

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

我杀死了所有Cygwin程序,然后重新开始。现在一切都运行良好且快速。我将在每次Cygwin DLL文件更新时删除此hack,然后查看如何进行。

这只是一个草图-您至少要保留备份!

编辑

不推荐使用。请参阅我对此问题的最新解答,以获得更好的(IMHO)解决方案。


为我工作...而不必安装服务!
Droj

@bobbogo您的答案对我来说是最底层的。最后,您在编辑中指的是哪个答案?谢谢!
jpaugh

很高兴知道这一点,尽管它不能解释为什么“所有cygwin命令...在执行之前会有〜10-20秒的延迟”。
philwalk

@philwalk我认为是的。问题在于,Cygwin在启动时必须填充其用户数据库。当您位于一个大的windoze域中时,这将花费很长时间。并非每个命令都会遭受此延迟,只有任何进程树中的第一个受此延迟。
bobbogo

2

阅读下面的更新,原来不是问题。

尽管此问题是断断续续的,但我一直在忍受这个问题的极端版本​​。当问题存在时,所有命令将花费20秒,最极端的情况是几分钟。它会发生几天,然后消失几天。顺便说一句,我有一个非常快的系统,其中包含许多DRAM,SSD驱动器等。

我现在终于有了一个可以解释问题的候选理论。我只是通过setup-x86_64.exe(我很少这样做)更新了Cygwin,此后事情又变得非常灵敏(字面上比以前快1000倍)。我猜想更新结束时的rebaseall是造成差异的原因。

更新:我之前看到的提速显然是巧合;当问题在一个月后再次出现时,这并没有解决。事实证明,禁用Windows Defender实时保护可立即解决该问题。


2
禁用Windows Defender实时保护后,立即解决了速度下降的问题
Givenkoa

1

作为一个脚注,我只是发现在Cygwin更新之后,我不得不重建passwdgroup文件。由于缓慢的行为再次发生,因此安装的autorebase部分需要几天的时间才能完成。

我也不需要在(Windows 10)系统上修改默认的nsswitch.conf。

顺便说一句,这种缓慢的行为还通过Windows命令提示符和可移植应用程序显示出来。一些便携式应用程序在启动时需要花费几个小时才能生成一个窗口。


您是什么意思重建它们?只是制作新的空版本?
user13743

1

这就是这个问题对我的体现。在Cygwin上输入的第一个命令(例如20)提示它很快,但是随后突然变得非常缓慢。

我尝试了上述身份验证修复程序。它对我不起作用。

Cygwin FAQ报告说Cygwin不喜欢用户名或组名中的空格。请参阅“ 我的Windows登录名”中是否有空格,这会引起问题吗?

我的群组名称中有一个空格,因此我/etc/group在身份验证修复程序生成的文件中将其更改为下划线。那也不起作用。

针对相同问题的其他发布也报告了它是由病毒扫描程序导致的。我用Sophos替换了现有的病毒扫描程序(System Center Endpoint Protection)。那为我解决了问题。

我希望这有帮助。


0

我在cygwin上有一段时间构建缓慢执行的问题。

我昨天被迫进行更新,并遇到了rebaseall根本无法执行的问题。这迫使我不得不去研究其他事情,并且发现了一份报告,据称Trusteer Rapport /端点保护会导致rebaseall问题和响应时间变慢。因此,我通过“控制面板”中的常规Windows卸载程序方法将其删除。

然后,我从以admin身份运行的破折号界面进行了rebaseall操作。

因此,这意味着在开始菜单中输入破折号(win7)。破折号快捷方式将出现,右键单击以管理员身份运行。然后在启动时执行:

/ usr / bin / rebaseall -v

去喝咖啡...它会坐几秒钟,然后才能显示输出,如果它坐了5分钟以上却什么也不做,那么您还有另一个问题。

这修复了rebaseall,但也大大提高了我的构建速度。值得检查是否已安装,请尝试将其删除。


您能否详细描述所采取的步骤以允许其他人执行?……请不要在评论中回复;编辑  您的答案,使其更清晰,更完整。
斯科特,

在Windows 10上,破折号的位置为c:\msys64\user\bin\dash.exe。为了以管理员身份运行它,我必须在桌面上为其创建一个快捷方式。不幸的是,这不能解决我的慢cygwin:(
user13743
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.