我有一个像这样的对象服务器的数组:
Array
(
[0](
(
[id] => 1
[version] => 1
[server_addr] => 192.168.5.210
[server_name] => server1
)
)
[1](
(
[id] => 2
[server_addr] => 192.168.5.211
[server_name] => server2
)
)
)
Run Code Online (Sandbox Code Playgroud)
通过运行下面的代码,我能够获得所需的输出
foreach ($model as $server) {
$cpu_usage = shell_exec('sudo path/to/total_cpu_usage.sh '.$server->server_addr);
$memory_usage = shell_exec('sudo path/to/total_memory_usage.sh '.$server->server_addr);
$disk_space = shell_exec('sudo path/to/disk_space.sh '.$server->server_addr);
$inode_space = shell_exec('sudo path/to/inode_space.sh '.$server->server_addr);
$network = shell_exec('sudo path/to/network.sh '.$server->server_addr);
exec('sudo path/to/process.sh '.$server->server_addr, $processString);
$processArray = array();
foreach ($processString as $i) {
$row = explode(" ", …Run Code Online (Sandbox Code Playgroud) 在过去的几周里,我一直在调整和搞乱PostgreSQL,我将在下一个项目中使用它.
我的规格是:
我试过的事情:
Pgtune
PgBouncer&Pgpool(连接池和负载平衡)
调整php-fpm和nginx(worker_processes,worker_connections,pm.max_children等)
Linux文件句柄限制和套接字调整.
我正在测试它通过使用ApacheBench调用网页来插入.这是实用的吗?
ab -n 17500 -c 1750 -r http://example.com/insert.php
Run Code Online (Sandbox Code Playgroud)
到目前为止,我只能同时处理1700-2000连接而不丢弃任何事务(通常在nginx错误日志中过早关闭连接或资源暂时不可用或抱歉, PostgreSQL 已经返回太多客户端).
我为php-fpm尝试了TCP/IP和unix socket,而TCP/IP似乎比unix socket更具可扩展性.
PHP可以使用连接池吗?因为我从Web服务器调用数据库的方式仍然相同(对pgpool或pgbouncer进行了大量的单独连接).
我的目标是同时处理至少10,000个事务.决定因素是什么?它是web服务器与db(php-fpm)或PostgreSQL本身之间的瓶颈吗?通常,大公司(PHP Web应用程序)如何处理这样的卷?
exec ×1
foreach ×1
nginx ×1
pgbouncer ×1
pgpool ×1
php ×1
postgresql ×1
shell ×1
shell-exec ×1
sockets ×1