我有test.gzipjson 文件
{"events": [
{"uuid":"56c1718c-8eb3-11e9-8157-e4b97a2c93d3",
"timestamp":"2019-06-14 14:47:31 +0000",
"number":732,
"user": {"full_name":"0"*1024*1024*1024}}]}
full_name 归档包含 1GB 的0压缩文件大小 ~1Mb
如何在拆包过程中保护我的服务,以免我的记忆结束?
func ReadGzFile(filename string) ([]byte, error) {
fi, err := os.Open(filename)
if err != nil {
return nil, err
}
defer fi.Close()
fz, err := gzip.NewReader(fi)
if err != nil {
return nil, err
}
defer fz.Close()
s, err := ioutil.ReadAll(fz)
if err != nil {
return nil, err
}
return s, nil
}
func main() {
b, err := ReadGzFile("test.gzip")
if err != nil {
log.Println(err)
}
var dat map[string]interface{}
if err := json.Unmarshal(b, &dat); err != nil {
panic(err)
}
fmt.Println(dat)
}
在这种情况下,输出可以通过 OOMKiller 终止我的服务
GCT1015
红颜莎娜
相关分类