当前位置: 首页 > 科技观察

服务器部署:php.ini配置性能调优

时间:2023-03-23 01:35:05 科技观察

默认安装的PHP就像是在百货公司买的普通西装,很合身,但并不完美。TunedPHP就像一件定制的西装,完全符合您的尺寸。但是需要注意的是,调优PHP只是提高PHP性能和效率的一种措施,对于糟糕的代码和无响应的API调用没有任何作用。php.ini文件PHP解释器在php.ini文件中配置和调优。这个文件的位置在不同的操作系统中是不一样的,命令行对应的php.ini和PHP-FPM对应的php.ini文件一般是分开的。这里我们假设配置了PHP-FPM对应的php.ini,但是下面提到的优化措施适用于所有的php.ini。注意:我们应该首先使用PHPIniscan工具扫描php.ini,以检查是否使用了安全最佳实践。内存在运行PHP时,需要关心每个PHP进程使用多少内存。php.ini中的memory_limit设置用于设置单个PHP进程可以使用的最大系统内存。该设置的默认值为128M,可能适合大多数中小型PHP应用程序。但是,如果您运行的是小型PHP应用程序,则可以减小此值以节省系统资源。相反,如果您运行的是内存密集型的PHP应用程序,则可以增加此值。该值的大小由可用的系统内存决定。确定分配给PHP的价值是一门艺术。在决定给PHP分配多少内存以及它能承受多少PHP-FPM进程时,可以根据以下维度信息来判断:Total可以给PHP分配多少内存?以2G内存的VPS为例。这个设备上可能还有其他进程在运行,比如MySQL、Nginx等,所以预留512M给PHP比较合适。每个PHP进程平均消耗多少内存?要监控进程的内存使用情况,可以使用命令行命令top,也可以在PHP脚本中调用memory_get_peak_usage()函数。无论使用哪种方法,都必须多次运行同一个脚本,然后取内存消耗的平均值。.你能负担得起多少PHP-FPM进程?假设我给PHP分配了512M内存,每个PHP进程平均消耗15M内存,那么我可以负担得起34个PHP-FPM进程。是否有足够的系统资源?最后,您需要确认有足够的系统资源来运行PHP应用程序并处理预期的流量。注意:我们应该使用ApacheBench或Siege在类似生产的条件下对PHP应用程序进行压力测试,以确定生产环境是否有足够的可用资源。在ZendOPcache确定分配多少内存后,您可以配置PHP的ZendOPcache扩展。有关此扩展的更多信息,请参阅这篇文章:http://lavelacademy.org/post/4396.html。PHP5.5.0+内置此扩展,以下是用于配置和优化php.ini文件中的ZendOPcache扩展的设置:opcache.memory_consumption=64:memoryallocatedforopcodecache(inMB),allocatedmemory该卷应该能够保存应用程序中所有PHP脚本编译的操作码。这个值可以根据应用的体积设置成不同的值。opcache.interned_strings_buffer=16:用于存储驻留字符串的内存量(以MB为单位)。什么是常驻字符串?在幕后,PHP解释器将找到同一字符串的多个实例并将该字符串存储在内存中。如果再次使用相同的字符串,PHP解释器将使用一个指针来节省内存。默认情况下,PHP驻留字符串在每个PHP进程中都是隔离的。该设置允许PHP-FPM进程池将所有进程常驻字符串存储在一个共享缓冲区中,这样PHP-FPM进程池中的多个进程引用常驻字符串,可以节省更多的内存。opcache.max_accelerated_files=4000:操作码缓存中可以存储的PHP脚本的最大数量。该值的范围在2000到100000之间。该值必须大于PHP应用程序中的文件数。opcache.validate_timestamps=1:当该设置的值为1时,PHP会在一段时间后检查PHP脚本的内容是否发生变化,检查间隔由opcache.revalidate_freq设置指定。如果这个设置的值为0,PHP将不会检查PHP脚本的内容是否有变化,我们必须自己清除缓存的操作码。建议开发环境设置为1,生产环境设置为0。opcache.revalidate_freq=0:设置多久(以秒为单位)检查PHP脚本内容是否已更改。设置为0秒的意思是,只有当opcache.validate_timestamps设置为1时,PHP文件才会在每次请求时重新验证。所以在开发环境中每次都会重新校验PHP文件,而在生产环境中则不会。核实。opcache.fast_shutdown=1:此设置允许操作码使用更快的关闭步骤,将对象销毁和内存释放留给ZendEngine的内存管理器。文件上传如果您的应用程序允许文件上传,最好设置可以上传的最大文件大小。另外,最好设置一下可以同时上传的最大文件数:file_uploads=1upload_max_filesize=10Mmax_file_uploads=3PHP默认允许一次请求上传20个文件,最大上传文件为2MB。这里我设置了单次请求最多只能上传3个文件,每个文件最大10MB。这个值不要设置太大,否则会超时。注意:如果需要上传大文件,需要相应调整Web服务器的配置。除了在php.ini中设置外,还要调整Nginx虚拟主机配置中的client_max_body_size设置。最大执行时间php.ini文件中的max_execution_time用于设置单个PHP进程在终止前可以运行的最长时间。此设置默认为30秒,建议设置为5秒:max_execution_time=5注意:可以通过调用PHP脚本中的set_limit_time()函数来覆盖此设置。假设我们要生成一份报告,并将结果制作成PDF文件。这个任务可能需要10分钟才能完成,我们当然不想让PHP请求等待10分钟。我们应该编写一个单独的PHP文件,让它在单独的后台运行In-processexecution,webapplicationcanforkaseparatebackgroundprocessinmillisecondsandreturnanHTTPresponse: