beego框架post参数默认长度限制64M

在使用beego框架构建的HTTP服务中,遇到一个接口接收logstash日志数据的问题,发现当日志数据量较大时,beego默认POST参数长度限制为64MB。超过此限制,RequestBody无法获取完整数据,且无错误提示,导致处理失败。问题源于beego框架的源码设定,可参考相关GitHub议题进行解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

使用beego做的一个http服务一个接口,接收logstash推送过来的日志数据,对日志进行报警和统计处理,一直稳定运行。但是最近开始该服务的日志显示经常收到logstash推送日志的请求,但是处理的日志数量为0条并且处理时间明显比正常的请求时间长(正常30ms以内,异常请求都是500ms以上)。正常情况下logstash会打包推送日志,也就是说根据需要推送的日志量不同一个http请求中包含1-1000条不等的日志。所以上面的情况就很不正常。

由下面这个连接(https://github.com/astaxie/beego/issues/2739)中提问的启发仔细看了一下相关源码

	// router.go 709行
	if r.Method != http.MethodGet && r.Method != http.MethodHead {
   
		if BConfig.CopyRequestBody && !context.Input.IsUpload() {
   
			context.Input.CopyBody(BConfig.MaxMemory)
		}
		context.Input.ParseFormOrMulitForm(BConfig.MaxMemory)
	}

// input.go 353行
// CopyBody returns the raw request body data as bytes.
func (input *BeegoInput) CopyBody(MaxMemory int64) []byte {
   
	if input.Context.Request.Body == nil {
   
		return []byte{
   }
	}

	var requestbody []byte
	safe := &io.LimitedReader{
   R: input.Context.Request.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值