PHP-gc.maxlife和performance?
我想知道较高的gc.maxlifetime值是否会影响站点的性能?比如说2周(1209600秒) 我问这个问题的原因是因为我的一些页面需要几分钟才能加载,而以前加载速度非常快。我将该值从默认的24分钟更改为2周,这样用户的会话数据和登录将是持久的。这是大约两周前的事情,这让我相信高gc.maxlife可能是页面加载缓慢的问题。但它并不总是相同的页面 PS:我正在迁移到一个基于cookie的持久登录系统,我相信它对性能更友好PHP-gc.maxlife和performance?,php,performance,session,garbage-collection,Php,Performance,Session,Garbage Collection,我想知道较高的gc.maxlifetime值是否会影响站点的性能?比如说2周(1209600秒) 我问这个问题的原因是因为我的一些页面需要几分钟才能加载,而以前加载速度非常快。我将该值从默认的24分钟更改为2周,这样用户的会话数据和登录将是持久的。这是大约两周前的事情,这让我相信高gc.maxlife可能是页面加载缓慢的问题。但它并不总是相同的页面 PS:我正在迁移到一个基于cookie的持久登录系统,我相信它对性能更友好 谢谢你,gc。最长生存期不应该直接影响性能,因为它所做的一切都是设置一个
谢谢你,gc。最长生存期不应该直接影响性能,因为它所做的一切都是设置一个持续时间,在这个持续时间之后,会话可以被公平地删除(尽管不能保证它什么时候会被实际删除) 可能存在一些附带的性能差异,即每当会话GC启动时,它将有更多的会话来检查是否有资格清理,因此需要更多的时间来整理所有会话。这是因为您增加了会话的最短生存期,因此在所有其他条件相同的情况下,任何时候都有比以前更多的会话正在进行
您可以做一个非常简单的检查:查看会话存储机制(默认情况下,这意味着系统临时目录中的文件),并查看当前存在多少个会话。如果是文件系统会话,那么不应该有任何明显的性能下降,除非您有10K或更多;在任何情况下,“可见性能下降”都不会上升到分钟范围内(这是一个硬盘,它的速度有多慢?)
gc.max_life
不应该直接影响性能,因为它所做的一切都是设置会话被公平删除的持续时间(尽管无法保证它最终会被删除)
可能存在一些附带的性能差异,即每当会话GC启动时,它将有更多的会话需要检查是否有资格清理,因此将需要更多的时间来对所有会话进行排序。这是因为您增加了会话的最小生存期,所以在任何时间,所有其他事情都是相同的与以前相比,现在正在进行更多的会议
您可以做一个非常简单的检查:查看会话存储机制(默认情况下,这意味着系统临时目录中的文件),并查看当前存在多少个会话。如果是文件系统会话,则不应出现任何可见的性能下降,除非您有10K或更多;在任何情况下,“可见的性能下降”永远不会上升到分钟范围内(这是一个硬盘,它能有多慢?).我认为您不应该尝试使用gc.maxlifetime设置。一般来说,垃圾收集器是一个非常轻量级的过程。我认为您应该尝试找出页面速度慢的原因。您可以通过在某些代码集之间添加计时器来实现这一点。然后查看代码的哪部分速度慢 例如:
<?php
$start = microtime( true );
/* code block A */
$blockA = microtime( true ) - $start;
$start = microtime( true );
/* code block B */
$blockB = microtime( true ) - $start;
// etc.
/**
* At the end of your script, you can use the times and
* print them to the screen, or log them to a file.
*/
echo '<pre>' . PHP_EOL;
echo 'Block A took '. round( $blockA, 2) .' seconds ' . PHP_EOL;
echo 'Block B took '. round( $blockB, 2) .' seconds ' . PHP_EOL;
echo '</pre>' . PHP_EOL;
?>
祝你好运找到慢的部分。提示:如果有数据库查询,请仔细查看。我认为你不应该尝试使用gc.maxlife设置。一般来说,垃圾收集器是一个非常轻量级的过程。我认为你应该试着找出页面慢的原因。你可以通过在特定的co集之间添加计时器来做到这一点然后看看你的代码哪一部分是慢的 例如:
<?php
$start = microtime( true );
/* code block A */
$blockA = microtime( true ) - $start;
$start = microtime( true );
/* code block B */
$blockB = microtime( true ) - $start;
// etc.
/**
* At the end of your script, you can use the times and
* print them to the screen, or log them to a file.
*/
echo '<pre>' . PHP_EOL;
echo 'Block A took '. round( $blockA, 2) .' seconds ' . PHP_EOL;
echo 'Block B took '. round( $blockB, 2) .' seconds ' . PHP_EOL;
echo '</pre>' . PHP_EOL;
?>
祝你好运找到慢的部分。提示:如果有数据库查询,请仔细查看。首先,没有选项“gc.maxlife”-你的意思是“session.gc\u maxlife”;) 选项“session.gc_maxlifetime”定义了垃圾收集(gc)进程不会删除会话数据的时间。gc进程的启动频率与“session.gc_除数”和“session.gc_概率”定义的频率相同 如果您有问题,您应该查看会话数据将存储在哪里(会话保存处理程序)。然后您应该优化该进程或禁用该进程并自行清理数据(cron) 如果使用默认配置,PHP将会话数据存储在本地硬盘上,这通常是瓶颈
将“session.gc\u maxlifest”的值增加太多会导致安全问题,并简单地拖延您的问题。首先,没有选项“gc.maxlifest”-您的意思是“session.gc\u maxlifest”;) 选项“session.gc_maxlifetime”定义了垃圾收集(gc)进程不会删除会话数据的时间。gc进程的启动频率与“session.gc_除数”和“session.gc_概率”定义的频率相同 如果您有问题,您应该查看会话数据将存储在哪里(会话保存处理程序)。然后您应该优化该进程或禁用该进程并自行清理数据(cron) 如果使用默认配置,PHP将会话数据存储在本地硬盘上,这通常是瓶颈
增加“session.gc\u maxlifetime”的值“如此多的设置会导致安全问题,并会拖延您的问题。此设置导致页面下载的可能性很低。你的站点是否有db交互?它可能是关于db。另一方面,当您降低gc_生存期时,页面加载速度会加快?是的,它有db。查询的表大约有13000行,用户使用LIMIT子句一次最多检索10行。我认为,该表是使用联接正确构造的。thanksIt不太可能此设置使您的页面加载下降。你的站点是否有db交互?它可能是关于db。另一方面,当您降低gc_生存期时,页面加载速度会加快?是的,它有db。被查询的表大约有13000行,用户检索这些行