寻找适合我的Web应用程序的最佳服务器设置解决方案

时间:2019-05-01 02:13:16

标签: php mysql apache nginx mariadb

我在两个单独的服务器上有3个基于Codeigniter的应用程序实例。 服务器1。 第一个实例是应用程序,第二个实例是rest API,都使用相同的数据库。 (我知道在同一台计算机上拥有两个实例(除了整洁度)没有任何好处,这就是为什么我采用这种方式)。 服务器2。 该服务器仅拥有其余的API,并具有全部php数据处理功能。我称这个服务器为工作服务器,是因为它只是这样做。 该服务器充当与我连接的许多API服务的终结点。 因此,此服务器的全部工作是作为第一个功能来接收来自应用程序的请求,有时它会先处理这些请求。 然后将请求发送到API服务。程序已完成,此会话结束。 API服务会在很短的时间内响应结果,该服务器将在其中获取并处理数据,然后将结果发送到应用程序。

应用程序有时会占用大量非常简单的sql查询,大部分情况是在单个表上进行插入/更新。发送请求的数量也保持最小,这是因为在大多数情况下,我在一个请求中发送了尽可能多的请求数据。我称之为批量请求。

最重的是我得到的响应数量,我可以在几秒钟内对一个请求获得多达1000个响应。(我无法将其最小化,因为我需要每个响应),然后是每个响应还要紧接着又执行两个相同的响应,以确保我得到了它,我威胁说我会尽快重复,并停止该过程。 然后,我用php处理每个响应(仅匹配结果数组就不太沉重),并将其发布到应用程序服务器上的其余API来更新应用程序表。

现在,当我运行一个返回1000个响应的请求时,应用程序可以很好地处理数据并获得正确的结果,但是此时其他用户几乎无法访问服务器。

在(LAMP)Ubuntu 16.04上使用mysql和apache运行的所有程序。 框架是最新的代码点火器。

当前我的设置是... ...对于应用程序服务器 2个vCPU 4GB RAM

...用于工作程序API服务器 1个vCPU 1GB内存

我知道服务器设置非常薄弱,并且肯定会出现瓶颈。但这只是为了发展阶段。 现在,我正在进入生产阶段,如果您对如何最好地解决这个问题有任何意见,我想听听。

我首先是一名程序员,然后是服务器管理员。

所以我一直在考虑切换到NGINX,我想我肯定会使用php-fpm,也许是MariaDB,但我读过的线程管理很重要。这个应用程序可能不会一直运行很长时间,大概是50/50,所以我认为正因为如此,我可能无法始终将其设置为最佳状态,并且最终可能没有更好的性能。 然后可能将不得不增加服务器数量并设置负载平衡,以及高可用性。 不确定这一切。 我认为仅将服务器升级到最大不会有帮助。我可以一路提高到每服务器64 GB RAM和32个vCPU。

我能听听您的意见吗? 也许分享一些经验? 链接到资源(如果有的话)?

非常感谢。我希望你能帮助我。

谢谢。

1 个答案:

答案 0 :(得分:0)

您的问题都不重要。好吧,那太夸张了。如今的机器差异不大,不必担心第一天就从“最佳”开始。相反,实施 something ,用它运行一段时间,然后查看瓶颈所在,以便决定下一步要做什么。

很长一段时间您可能不会遇到任何瓶颈。