春哥:
你好!
我的项目是一个三方数据交换系统,openresty从前端收到文件流后,做一定的处理,再把文件传给后端的分布式存储服务器。
我的业务要求是在收到文件流后,保存到本地(内存盘,centos 下的/dev/shm中),并记录接收成功日志文件,返回收到成功的信息给前端客户端。
我再能过ngx.timer.at,把文件通过socket的方式发送给后端的分布式存储服务器,发送失败则记录一个失败的日志文件,发送成功,则删除本地的文件。
我现在急需解决的问题是:
性能不高,主要表现在,我直接把收到的流发给后端的分布式存储服务器的话, 1000Mb的网卡,我的性能可达到900Mb左右,加了接收文件到本地,通过ngx.timer.at再把文件发给后端。我现在的性能只有500Mb左右阿。不知道原因是什么?我的业务是接收300K的图片。
我判断可能是有两个问题:
1.第一重复打开和半闭两个日志文件,阻塞了进程;
2.文件流保存到本地太慢;
这两个问题不知道有没有好的处理办法,特别是第一个问题,我怎么实现打开文件句柄后,保存起来,后面的请求直接使用?是采用share-dict,还是其它的方法,最好能给我几行代码,谢谢。