我一直在试图为我们的应用程序找到一个合适的GeoIP数据库,并且据我所知,MaxMind City可能是最好的(尽管如果我错了,请让我知道!)。 我目前正在尝试免费版本,这在英国并不是很准确,但它会用于测试目的。在RAM +服务器性能中缓存MaxMind City绑定数据库
于是又回到正题:
我们的应用程序是用PHP编写,并最终我们将有很多的传入流量的。我们之所以要使用GeoIP数据库,是因为我们需要在每次页面加载时显示城市,地区,国家以及将特定访问者的数据保存到mysql数据库。所以我开始考虑在每个页面请求中加载二进制数据会导致服务器消耗大量RAM并提高处理速度。这就是为什么我想知道是否有可能将它缓存在内存中,并用PHP来控制它,因为它是26Mb(我知道它可能看起来不是很多),但仍然当我们开始每次获得数千页的请求时第二,这会导致性能下降,我们显然希望避免。
服务器:
处理器:16千兆赫(8×2千兆赫)
RAM:16384 MB
HDD:400 GB
阿帕奇+ Nginx的+光油,PHP5 .3,MySQL5.1
我们对于大规模应用程序开发相当新颖,所以如果您有任何建议如何改进一般性能,或有任何其他提示与我们的案例提高性能相关让我知道。
谢谢!
不错!我们会做一些测试,但是让mysql缓存它是一个好主意。谢谢!不知道为什么我们没有意识到之前尝试过:) – Ignas 2012-02-22 13:38:38
为了提高性能,我们对'ip2location'表进行了一些处理。 “问题”是,有一些IP块,比一个A类网络大。所以我们将这些块(可能是这个表中的5或6个条目)分成多个块,然后我们在这个表中添加一个新的列,其中包含IP的第一个字节(因此,这个'unsigned tinyint'列的值可以从0到255 )。在这个额外的列上有一个索引,这个列在'WHERE'子句中被引用。这使得它非常有效。 – rabudde 2012-02-22 13:57:24