我正在运行Google Cloud Compute VM作为我在iOS和Android上可用的应用程序的应用程序服务器。服务器在uWSGI中运行Django,前面是nginx。 uWSGI和nginx之间的通信通过unix文件套接字发生。
最近我开始注意到客户端的超时。我做了一些实验,发现uWSGI有时会在将数据写入文件套接字时出错。当我增加“最长时间”时间在客户端的参数,它顺利通过。例如,返回大约200KB json数据的样本请求,Django计算大约需要1秒。但UNIX套接字似乎需要1-2秒,这对于200KB的响应来说似乎太高了。如果客户端期望在2秒内响应,则通常会导致uWSGI发生写入错误(如下面的屏幕截图所示)。当我在客户端增加超时时,它会顺利通过。
我想知道是否有一些配置更改可以更快地在UNIX套接字上进行读写。对于来自我的服务器的JSON响应,200KB是一个非常小的大小 - 所以我不能让它失效。出于商业原因,我的客户端(iOS或Android)的超时时间不会超过2秒。
答案 0 :(得分:0)
几个unix实体由文件表示,但根本没有文件。管道和套接字是由不是文件的文件表示的实体的示例。
因此,从unix套接字写入和读取不会绑定到文件系统I / O,也不会共享文件系统时间响应。实际上,unix socket是IPC的最快方式之一,它比TCP套接字更有效,因为它根本不使用网络I / O.
如上所述,这里有一些关于如何解决您的特定问题的提示: