Windows 上的 Cygwin 非常慢/滞后

Windows 上的 Cygwin 非常慢/滞后

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

在 Bash shell 窗口中执行命令,运行良好(启动 Bash 时,我看到了延迟)。从我的本地 PATH 变量中删除所有条目没有影响。我使用 Windows 7 x64 和 Cygwin x64 v 1.7.34 (0.285/5/3)。

答案1

有时我会在有数千名用户的 Windows 域中工作。

我不想做任何最佳猜测的方法。我更愿意赛格威根据需要缓存用户信息。事实证明这很容易做到。

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 在所有赛格威流程。

当然,你的情况可能有所不同,但这是我现在喜欢的工作方式。我几年前就应该这么做了。

答案2

这似乎与身份验证有关。对我来说,需要 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)解决方案。

答案3

作为脚注,我刚刚发现在 Cygwin 更新后我必须重建passwdgroup文件。由于缓慢的行为再次发生,安装的自动重定部分需要几天才能完成。

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

顺便说一句,Windows 命令提示符和便携式应用程序也表现出缓慢的行为。一些便携式应用程序在启动时需要几个小时才能显示窗口。

答案4

这个问题对我来说表现如下。在 Cygwin 提示符下输入前 20 条命令时,它很快,但随后突然变得非常慢。

我尝试了上述身份验证修复方法。但对我不起作用。

Cygwin FAQ 报告称,Cygwin 不喜欢用户名或组名中有空格。请参阅我的 Windows 登录名中有一个空格,这会导致问题吗?

我的组名中有一个空格,所以我在/etc/group身份验证修复生成的文件中将其更改为下划线。这也不起作用。

针对同一问题的其他帖子已将其报告为病毒扫描程序的结果。我用 Sophos 替换了现有的病毒扫描程序(System Center Endpoint Protection)。这为我解决了这个问题。

我希望这有帮助。

相关内容