Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Ubuntu 10.4上的APC配置。apc.shm_大小、apc.shm_段和Apache存在问题_Php_Performance_Apache_Ubuntu_Apc - Fatal编程技术网

Php Ubuntu 10.4上的APC配置。apc.shm_大小、apc.shm_段和Apache存在问题

Php Ubuntu 10.4上的APC配置。apc.shm_大小、apc.shm_段和Apache存在问题,php,performance,apache,ubuntu,apc,Php,Performance,Apache,Ubuntu,Apc,我刚刚安装了APC,以便在我的Ubuntu VPS服务器上缓存我的PHP代码。使用 sudo apt-get install php-apc sudo /etc/init.d/apache2 restart 这很有效。但是,我在增加分配给APC的RAM块时遇到了一些问题。如果我运行apc.php,它会提供有关共享内存的信息 Shared Memory 1 Segment(s) with 30.0 MBytes (mmap memory, pthread mutex locking) 即

我刚刚安装了APC,以便在我的Ubuntu VPS服务器上缓存我的PHP代码。使用

sudo apt-get install php-apc
sudo /etc/init.d/apache2 restart
这很有效。但是,我在增加分配给APC的RAM块时遇到了一些问题。如果我运行apc.php,它会提供有关共享内存的信息

Shared Memory   1 Segment(s) with 30.0 MBytes (mmap memory, pthread mutex locking) 
即使我配置了

apc.shm_segments    3
不设置默认值

apc.shm_size    30
此外,我还遇到了一个问题,即只要我在
apc.ini
php.ini
中设置
apc.shm_size
,apache就会挂起重启/优雅,并且不会出现

我的问题是: 1.如果分配给APC的内存是
APC.shm_size*APC.shm_segments
为什么我只能看到90M? 2.是否有人在设置apc.shm_size时遇到挂起Apache的问题?我该如何解决这个问题


非常感谢

您应该检查共享内存的内核最大大小。在类似debian的发行版上,它的价格相当低(而ubuntu是类似debian的)。 通过sysctl.conf修改它可以帮助您。?使用以下命令获取当前值:

sysctl -a  | grep shmmax
它是以字节为单位的值

这可以解释当您设置的数字太大时apache崩溃的原因(但您应该在error.log中对此有所了解)

似乎apc不总是使用shm_段。我们可以在这里看到一些解释:

如果已将APC配置为使用内存映射文件(使用--enable mmap选项),则将忽略shm_段设置,除非通过mmap_file_mask设置指定文件掩码。 可以通过为
apc.mmap\u文件\u掩码
配置设置提供一个值来修复该问题(请参见链接)


但正如在这篇评论中所说,使用多个共享段肯定比使用大段更糟糕。至少有两个大型应用程序大量使用大型共享内存,并且总是需要更改内核设置,它们是VarnishPostgreSQL。他们都选择使用一个大的共享段而不是几个。

似乎我发现了问题所在

sudo apt-get install php-apc
sudo /etc/init.d/apache2 restart

在我的机器上安装了旧版本的
APC
。在该版本中,
apc.shm_size=30M
必须在内存大小中没有M的情况下进行配置。因此,新版本的APC使用
APC.shm_size=30M
旧版本
APC.shm_size=30
。我做了更改后,Apache重新启动,没有出现故障。

您好,谢谢您的回复!试图通过
kernel.shmmax=134217728
增加共享内存大小,但不幸的是,这并没有解决我的问题。打开了一个新问题,更详细地描述了Debian Squence确认的问题。在Ubuntu和Debian的lucid、maverick和natty版本中,phpapc的版本是相同的。因此,所有这些版本的用户在指定apc.shm_大小时不应使用M。