有人可能请向我描述在服务器(Ubuntu,FWIW)上设置服务时使用Unix套接字文件与tcp / ip localhost:端口的优缺点吗?
在这个特定的实例中,它是一个Python WSGI服务器(uWSGI),但我只是对一般感兴趣(例如,我知道你可以在两种方式设置MySQL)。
我意识到,使用tcp / ip意味着服务可以暴露给其他机器,但我只是有兴趣在本地访问服务时是否有任何性能折衷。
干杯。
因为你没有tcp开销,所以Unix套接字速度要快一些。 如果您意识到这种性能损失是服务器负载的问题。 如果你没有很高的服务器负载,你将无法识别它。
如果您使用Jails(FreeBSD)或其他一些虚拟化技术将Web服务器与MySQL服务器分离,则通常使用tcp / ip设置而不是套接字。 虽然防火墙规则需要限制访问。
你需要知道你的系统是否处于沉重的负载之下,以至于套接字是必须的,或者你可以专注于一个好的系统devise(分离服务),那么TCP / IP解决scheme会更好。
所以请简短地回答一下:
是的,有一个性能差异,套接字更快。 如果你没有承受高服务器负载,只要select适合你的系统devise的东西。
这基本上是性能和灵活性之间的折衷。 Unix域套接字会给你提供更好的性能,而连接到本地主机的套接字可以提供更好的可移植性。 只需将IP地址从本地主机更改为不同的主机名,即可轻松将服务器应用程序移至其他操作系统。
Unix域套接字使用本地文件系统在服务器和客户端进程之间创build一个IPC机制。 当Unix域套接字连接时,你会在/ var的某处看到一个文件。
如果您正在寻找纯粹的最终性能解决scheme,您可能需要探索共享内存IPC。 但是,这有点复杂。
Unix域套接字的优点
Unix域套接字的缺点