第一步 查看本地的max open file
ulimit -a
第二步修改 open files 防止测试过程中出现 accept: too many open files in system; retrying in 5ms
临时修改 sudo sysctl -w kern.maxfiles=20480
写入文件代码
func SaveDataToFile(data string){
//设置时区
loc, _ := time.LoadLocation(os.Getenv("TIMEZONE"))
tm :=time.Now().In(loc)
day :=tm.Format("20060102")
filePath := os.Getenv("DATAFILEPATH")
//判断文件夹是否存在不存在则建立
_, err :=os.Stat(filePath)
if err !=nil{
os.MkdirAll(filePath,0777)
}
logFileName :=day+".log"
//日志文件
fileName := path.Join(filePath, logFileName)
fout, err := os.OpenFile(fileName,os.O_WRONLY|os.O_CREATE|os.O_APPEND, os.ModeAppend|os.ModePerm)
if err != nil{
log.PError(err.Error())
return
}
defer fout.Close()
if err != nil {
log.PError(err.Error())
return
}
fout.WriteString(data+"\r\n")
}
写入
for i:=1;i<=10000;i++{
timeM:=time.Now().UnixNano()
str:=strconv.FormatInt(timeM,10)
SaveDataToFile(str)
}
写入redis列表
func(this *GinBaseController)SaveDataToRedis(data string){
cacheKey:=os.Getenv("REDIS_PREFIX")
conf.PREDIS.LPush(cacheKey,data)
}
测试结果
列 | 写入文件 | 写入redis列表| |
---|---|---|
结果 | 20000 | 20000 |
总耗时 | 6s | 6s |
网友评论