用于php会话处理的慢速DynamoDB
我们使用DynamoDB来同步ELBs下多台EC2机器之间的会话 我们注意到这种方法会大大降低脚本的速度 具体来说,我制作了一个js,在服务器上调用10次3个不同的php脚本 1) 第一个只是一个echo timestamp();往返时间约为50毫秒。 2) 第二个是通过mysqli连接到RDS-MySQL的php脚本,需要相同的时间(大约50-60ms)。 3) 第三个脚本使用AWS官方文档中描述的DynamoDB会话保持方法,大约需要150ms(慢3倍!!) 我每天晚上都在清理垃圾(如文档所述),DynamoDB指标似乎还可以(附在下面) 我使用的代码如下:用于php会话处理的慢速DynamoDB,php,amazon-dynamodb,Php,Amazon Dynamodb,我们使用DynamoDB来同步ELBs下多台EC2机器之间的会话 我们注意到这种方法会大大降低脚本的速度 具体来说,我制作了一个js,在服务器上调用10次3个不同的php脚本 1) 第一个只是一个echo timestamp();往返时间约为50毫秒。 2) 第二个是通过mysqli连接到RDS-MySQL的php脚本,需要相同的时间(大约50-60ms)。 3) 第三个脚本使用AWS官方文档中描述的DynamoDB会话保持方法,大约需要150ms(慢3倍!!) 我每天晚上都在清理垃圾(如文档所
use Aws\DynamoDb\DynamoDbClient;
use Aws\DynamoDb\Session\SessionHandler;
ini_set("session.entropy_file", "/dev/urandom");
ini_set("session.entropy_length", "512");
ini_set('session.gc_probability', 0);
require 'aws.phar';
$dynamoDb = DynamoDbClient::factory(array(
'key' => 'XXXXXX',
'secret' => 'YYYYYY',
'region' => 'eu-west-1'
));
$sessionHandler = SessionHandler::factory(array(
'dynamodb_client' => $dynamoDb,
'table_name' => 'sessions',
'session_lifetime' => 259200,
'consistent_read' => true,
'locking_strategy' => null,
'automatic_gc' => 0,
'gc_batch_size' => 25,
'max_lock_wait_time' => 15,
'min_lock_retry_microtime' => 5000,
'max_lock_retry_microtime' => 50000,
));
$sessionHandler->register();
session_start();
我是做错了什么,还是一直在检索会话是正常的
谢谢。在AWS论坛上复制AWS工程师的信件: 这里有几件事需要检查:
如果您继续关注AWS论坛线程,AWS工程师应该能够帮助您解决问题。如果您想保持此线程的打开状态,也会对其进行监视 如果您的服务器位于同一区域,DynamoDB应该有一位数的毫秒延迟。当然,它们位于同一区域。同样的问题,每个页面需要额外的56ms。EC2和DynamoDb位于同一区域。