Gem ruby-china 的源有点慢

towonzhou · 2016年08月04日 · 最后由 huacnlee 回复于 2016年08月12日 · 3596 次阅读

只有我一个人觉得吗?https://gems.ruby-china.org 有点慢啊,还是我的网的问题?

我电信网络 bundle install 的时候经常会出网络问题..

确实时常失败,目前用 gemstash 搭建了一个缓存镜像,效果还可以。

代理 + 原 registry,挺快的

我来尝试调整一下,入口哪两台国外服务器最近太慢了

重新调整了一下部署结构,把 gems.ruby-china.org 的入口服务器放到国内了。

速度应该有明显的提升,但部署方式有一些调整,可能会遇到个别问题,大家及时反馈。

                                        [gems.ruby-china.org]
                                                   |
                                   [sh0.gems.ruby-china.org <Shanghai>]
                                                   |
                                                [Nginx]
                                                   |
              ---------------------------------------------------------------------------------------
              |                                    |                          |                     |
  {*.4.8, *.4.8.gz}                          {/gems, /quick}                 {/}                 {/api}
             |                                     |                          |                     |
[rubygems.global.ssl.fastly.net]      <gems-ruby-china.b0.upaiyun.com>    [app server]          [rubygems.org]
                                                   |
                                              [UpYun CDN]
                                                   |
                                         ----------------------
                                         Found             Not Found
                                          |                   |
                                        [200]       [rubygems.global.ssl.fastly.net]
                                                              |
                                                            [200] ------------> [UpYun Mirror Store]

#7 楼 @towonzhou 其实我也发现了,但我就忍住没说。。。

已经默默改回 rubygems,维护者加油!

#3 楼 @FrankFang 你用的什么代理?自己撘的?哪里的 vps?

#10 楼 @martin91 嗯嗯,为他们加油

@towonzhou @martin91 @ericguo @bianjp @acaby 你们现在再试试,去掉了 /api 的反向代理动作,改为由 bundler-api 在本地建立 API 数据库来实现。

现在速度能飞快了。

#13 楼 @huacnlee api 接口失败:

#14 楼 @bianjp 执行的什么命令?

#15 楼 @huacnlee bundle update --verbose

#16 楼 @bianjp 哦,哪个错误貌似不影响使用的,我在查查看是什么导致的

#14 楼 @bianjp 错误已经解决了

#18 楼 @huacnlee 辛苦了,谢谢~

有空能否分享下 bundler 从服务器获取解析依赖所需数据的几种方式(没搜到相关信息),以及目前镜像站的实现方式(找不到 bundler-api 的文档)?

根据我的观察,bundler 从服务器获取解析依赖所需数据的方式有以下三种:

  1. /versions,其内容似乎是服务器上所有 gem 的所有可用版本列表。返回的内容相当大,ruby-china 约 9.3M, rubygems.org 为 13M,即使 gzip 压缩后也分别达 3.8M, 5.2M。感觉对本地网络、服务器带宽的要求都会比较高。
  2. 如果 /versions 不可用,请求 /api/v1/dependencies
  3. 如果前两者都不可用,请求用到的各个 gem 的每个版本(不知道从哪儿弄来版本列表的)的 gemspec 文件,请求地址如 https://gems.liveneeq.com/quick/Marshal.4.8/mysql2-0.1.0.gemspec.rz

#19 楼 @bianjp 其实我还没搞太懂,这个要问 @qhwa 更熟悉一些

我的实现方式是基于 bundle install 以及 gem install xxx 过程需要调用到的 API 来搞。

#20 楼 @huacnlee 目前的实现方式下 rubygems.org 上更新的 gem 大概多久会同步到 ruby-china?或者还是和以前一样几乎无延迟?

#21 楼 @bianjp 有延迟了,现在为了速度,是定时任务的…之前为了试试,全部代理,结果不理想

我这几天都在反复调整,也是为了我方便,问题肯定会有,遇到了尽快告诉我,我抓紧调整就好了

#23 楼 @huacnlee 现在的速度是变快了,但是还是会遇到新数据延迟的情况,现在的同步机制是怎么样的?

#23 楼 @huacnlee 请问下,现在好像现在是不支持 直接去拉 rc 或者 pre 的 gem 的?

比如这个 https://rubygems.org/gems/mongoid/versions/6.0.0.rc0

我直接写在 gemfile 里好像提示

Could not find gem 'mongoid (~> 6.0.0.rc0)' in any of the gem sources listed in your Gemfile or available on this machine.

#24 楼 @numbcoder 只能定时同步呀,两者选其一

#25 楼 @jicheng1014 你这个问题解决了,是同步好了,但 Memcache 没有清理到位

#27 楼 @huacnlee 感谢感谢,另附:能否像 wikipedia 那种接受小额赞助的形式?这样 gems 站点会维护的更好

#28 楼 @jicheng1014 暂时不用,有赞助商的,你们多多支持 UpYun 和 腾讯云 好了

huacnlee 关闭了讨论。 08月19日 12:07
需要 登录 后方可回复, 如果你还没有账号请 注册新账号