我一直在使用PHP 5.6进行旧式电子商务应用程序的服务器迁移。交换机涉及两台来自Linode的专用32台服务器。一台服务器用于NginX + PHP,另一台仅用于MySQL。旧版应用程序利用memcached。
切换后,我看到由于专用的入站和出站连接而导致大量内部流量。到目前为止,该元素并未对性能造成任何问题。
但是,我的印象是查询将被缓存在本地计算机上,而不是在远程计算机上。因为如果查询缓存在远程主机上,它必须通过专用网络传输结果集,而不是从RAM或本地SSD检索。
我是否认为这是错误的?
可能是我遗漏了一个点,即与本地缓存相比,私有入站流量对整体性能更有利。
MySQL具有称为查询缓存的功能,但是此功能将查询结果集缓存在mysqld服务器进程中,而不是在客户端上。如果在将结果缓存在查询缓存中之后再次运行完全相同的查询,它将从查询缓存中复制结果,从而避免了再次运行查询的开销。但这无法避免将结果从mysqld跨网络传输到PHP应用程序的时间。
还请记住MySQL Query Cache is being deprecated and retired。
[或者,您的应用程序可能会将查询结果中的数据存储在memcached中,但是通常这是由应用程序代码完成的(我知道有UDF可以从MySQL触发器读取和写入memcached,但这不是一个好主意)。
如果您的memcached服务与PHP代码不在同一主机上,则将导致网络传输两次:第一次从MySQL查询数据时,一次,然后再次传输数据进入 memcached,那么以后每次您获取memcached的缓存数据out时。
PHP还具有一些用于进行内存中缓存的功能,例如APCu。我对此没有任何经验,从对文档where中存储缓存数据的简短扫描中还不清楚。