我有一个部署脚本,我希望我的所有 Web 服务器同时git pull
从同一位置执行。当只有两台服务器pull
同时执行时,不会出现问题。一旦我有三台或四台服务器,那么经常会发生一台或多台服务器“超时”并且无法完成拉取的情况。我通过 ssh 使用 git。
是否有任何服务器软件可以用来管理传入的请求并单独处理每个请求?
谢谢
答案1
您可能只是在托管主 git 存储库的服务器上遇到了一些限制。您没有提供任何数据来帮助诊断,但如果您使用的是速度慢/便宜的服务器,我会开始查看可能的 IO 争用。
所有 Web 服务器是否真的需要同时拉取数据?如果不是,只需在脚本中添加一点“模糊性”,让每个服务器在拉取数据之前随机休眠几秒(例如 0 到 15 秒之间)。
如果这不可行,请在启动部署脚本之前尝试从工作站手动执行 git pull(到与 Web 服务器处于相同状态的存储库)。这将准备好服务器的磁盘缓存,希望它能够处理大多数缓存中的拉取操作,而不是实际访问磁盘。