【问题标题】:JSON must be no more than 1000000 bytesJSON 不得超过 1000000 字节
【发布时间】:2015-12-06 15:50:34
【问题描述】:

我们有一个 Jenkins-Chef 设置,其中包含一个 QA 构建项目到一个客户的网站。构建从 Bitbucket 获取代码,脚本将厨师客户端的食谱上传到厨师服务器。

这些构建运行了很长时间。两天前,自动和手动构建开始失败并出现以下错误(取自 Jenkins 控制台输出):

更新的环境质量检查

上传示例部署 [0.1.314]

错误:请求实体太大

响应:JSON 不得超过 1000000 字节。

据我了解,JSON 文件应该与 nodejs 相关,这是开发人员在此网络服务器上使用的。

我们查看了 Jenkins、Chef-Server 和 QA 服务器的所有配置文件。我们找不到更改导致此错误的 1MB 限制的方法。

我们尝试更改 client_max_body_size,但没有成功。 我们检查了 JSON 文件的大小,没有一个达到这个限制。 知道我们可以在哪里找到解决方案吗?可以更改此限制吗?有什么我们可以做的(基础设施方面)还是应该从开发人员方面解决这个问题?

【问题讨论】:

  • 该消息是由于您的cookbook 太大,上传它的请求超过了1MB 的限制,通常这意味着您在部署时还有其他速度问题,因为这么大的cookbook 是有问题的。
  • 菜谱的大小似乎在 60MB 左右,除非我找错地方了? (我在 /home/ubuntu/chef-repo/cookbooks 中)。推动变更的开发人员如何将规模扩大这么多?
  • 也许他在菜谱的文件中放了一个 apckage example-deployment du -hs /home/ubuntu/chef-repo/cookbooks/example-deployment 应该会给你这个菜谱每个部分的大小
  • 似乎 /chef-repo/cookbooks/example-deployment/files/default/website/.git/ 包含 62MB 中的 56MB .. 不知道该怎么办?我应该要求开发人员调查一下吗?我应该删除这些并尝试构建它吗?
  • 在cookbooks下添加一个名为chefignore的文件,并在里面添加git以避免将其上传到厨师服务器见docs.chef.io/chef_repo.html#chefignore-files但git应该已经被忽略了,所以看看剩下的大图像/二进制文件的食谱

标签: node.js nginx jenkins chef-infra


【解决方案1】:

首先,1M 值或多或少是硬编码的,chef-server 不打算存储大型对象。

在上传食谱之前,会创建一个包含其信息的 json 文件,因为该文件将存储在数据库中并对其进行索引,它不应超过太大的大小以避免性能问题。

我们的想法是只将绝对必要的内容上传到 chef-server,去除 CVS 目录、任何 IDE 构建/项目文件等。

实现它的最佳解决方案是使用chefignore file。它必须在 cookbook_path 下创建。

此内容是上传食谱时要忽略的通配符匹配,因此示例如下:

*/.svn/* # To strip subversion directories
*/.git/* # To strip git directories
*~ # to ignore vim backup files

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 2016-11-11
    • 2017-06-29
    • 2018-08-24
    • 2012-04-17
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多