node.js - JSON 不得超过 1000000 字节

标签 node.js nginx jenkins chef-infra

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

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

Updated Environment qa

Uploading example-deployment [0.1.314]

ERROR: Request Entity Too Large

Response: JSON must be no more than 1000000 bytes.

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

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

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

最佳答案

所以首先,1M值或多或少是硬编码的, Chef 服务器并不打算存储大对象。

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

这个想法是仅将绝对必要的内容上传到 Chef 服务器,剥离 CVS 目录、任何 IDE 构建/项目文件等。

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

此内容是上传 Recipe 时要忽略的通配符匹配,因此示例可能是:

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

关于node.js - JSON 不得超过 1000000 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32500515/

相关文章:

jenkins - RTC 构建后交付选项与 Jenkins 构建

node.js - 无法使用 Node 的 osc 包发送 OSC 消息。端口关闭错误,即使计算机上的端口已打开

javascript - 我很奇怪 "Async"模块不能正常工作

node.js - Nginx X-Accel-Redirect 不适用于 node.js

url-rewriting - nginx php文件重写url

java - Jenkins - groovy 脚本 - 以 dd-mm-yyyy 格式获取上次成功构建日期

javascript - 如何迭代生成器函数的结果

javascript - 基于 Promise 的 net.createServer 版本

javascript - 服务器在带有 react-router 的 URL 前缀后面渲染 React 应用程序

bash - 使用 Jenkins 进行跨平台脚本编写