Looks like the module is not cleaning up and removing the shared memory
segment during a shutdown and/or restart.

> On Dec 28, 2015, at 8:43 AM, Tapple Gao <tapp...@gmail.com> wrote:
> 
> I found something that helped: I googled and discovered the ipcs utility:
> 
> 68 08:24 tapple /Library/Server/Web/Config/apache2/sites $ ipcs -am
> IPC status from <running system> as of Mon Dec 28 08:24:42 EST 2015
> T     ID     KEY        MODE       OWNER    GROUP  CREATOR   CGROUP NATTCH  
> SEGSZ  CPID  LPID   ATIME    DTIME    CTIME
> Shared Memory:
> m  65536 0x0052e2c1 --rw------- postgres postgres postgres postgres      6    
>  56    484    484 19:25:25  8:24:22 19:25:25
> m 1572865 0x0101d953 --rw-------     root    wheel     root    wheel      0 
> 2401448  78687  78687 17:32:23 17:32:58 17:32:23
> m  65541 0x00000000 --rw------- _devicemgr _devicemgr _devicemgr _devicemgr   
>    5      1    652    652 19:25:36  8:24:22 19:25:36
> m 2293766 0x0101d952 --rw-------     root    wheel     root    wheel      0   
>  904  78687  78687 17:32:23 17:32:58 17:32:23
> 
> Hey. that size of 2401448 looks familiar. yup. that’s the size listed of the 
> failed allocation in the logs. Let’s try removing it:
> 
> 171 08:26 tapple /Library/Server/Web/Config/apache2/sites $ sudo ipcrm -m 
> 1572865
> Password:
> 172 08:26 tapple /Library/Server/Web/Config/apache2/sites $ ipcs -am
> IPC status from <running system> as of Mon Dec 28 08:26:38 EST 2015
> T     ID     KEY        MODE       OWNER    GROUP  CREATOR   CGROUP NATTCH  
> SEGSZ  CPID  LPID   ATIME    DTIME    CTIME
> Shared Memory:
> m  65536 0x0052e2c1 --rw------- postgres postgres postgres postgres      6    
>  56    484    484 19:25:25  8:26:22 19:25:25
> m  65541 0x00000000 --rw------- _devicemgr _devicemgr _devicemgr _devicemgr   
>    5      1    652    652 19:25:36  8:26:22 19:25:36
> m 2293766 0x0101d952 --rw-------     root    wheel     root    wheel      0   
>  904  78687  78687 17:32:23 17:32:58 17:32:23
> 
> Now my server starts. Hovever, as soon as I kill and restart the server, the 
> same problem returns.
> I’m not familiar with ipc at all. Anybody know why any of this happened? why 
> the shared memory stuck around after apache quit? Why it couldn’t allocate 
> another block? why it worked after deleting the leftover one?
> 
>> On Dec 28, 2015, at 7:49 AM, Tapple Gao <tapp...@gmail.com> wrote:
>> 
>> /tmp is not a special volume on my system, and has plenty of room for a 2MB 
>> file:
>> sh-3.2# df -h
>> Filesystem                          Size   Used  Avail Capacity  iused    
>> ifree %iused  Mounted on
>> /dev/disk0s2                       184Gi  170Gi   14Gi    93% 44604554  
>> 3741719   92%   /
>> devfs                              329Ki  329Ki    0Bi   100%     1138       
>>  0  100%   /dev
>> map -hosts                           0Bi    0Bi    0Bi   100%        0       
>>  0  100%   /net
>> map auto_home                        0Bi    0Bi    0Bi   100%        0       
>>  0  100%   /home
>> map -fstab                           0Bi    0Bi    0Bi   100%        0       
>>  0  100%   /Network/Servers
>> /dev/disk0s5                       442Gi  353Gi   89Gi    80% 92513182 
>> 23266901   80%   /Volumes/Shared
>> localhost:/18XTcmWVPTgvjvav7dUs5F  184Gi  184Gi    0Bi   100%        0       
>>  0  100%   /Volumes/MobileBackups
>> 
>> 
>>> On Dec 27, 2015, at 4:18 PM, Jim Jagielski <j...@jagunet.com> wrote:
>>> 
>>> Are you *sure* that /tmp really has enough space?
>>> 
>>>> On Dec 27, 2015, at 8:47 AM, Sorin Manolache <sor...@gmail.com> wrote:
>>>> 
>>>> On 2015-12-25 19:36, Tapple Gao wrote:
>>>>> Hi. I’m trying to get mod_tile working on the builtin apache in Mac OS X 
>>>>> El Capitan. I am running into a problem with apr_shm_create failing to 
>>>>> allocate memory during ap_hook_post_config:
>>>>> [Fri Dec 25 12:09:17.898197 2015] [tile:error] [pid 22431] Successfully 
>>>>> create shared memory segment size 888 on file /tmp/httpd_shm.22431
>>>>> [Fri Dec 25 12:09:17.898285 2015] [tile:error] [pid 22431] (12)Cannot 
>>>>> allocate memory: Failed to create shared memory segment size 2401448 on 
>>>>> file /tmp/httpd_shm_delay.22431
>>>>> 
>>>>> Is there something I need to configure to get this shared memory working, 
>>>>> or increase the limit? This module is most often run on Ubuntu linux, 
>>>>> where it’s been running for years to power openstreetmap.org
>>>>> 
>>>>> 
>>>>>  /*
>>>>>   * Create a unique filename using our pid. This information is
>>>>>   * stashed in the global variable so the children inherit it.
>>>>>   * TODO get the location from the environment $TMPDIR or somesuch.
>>>>>   */
>>>>>  shmfilename = apr_psprintf(pconf, "/tmp/httpd_shm.%ld", (long 
>>>>> int)getpid());
>>>>>  shmfilename_delaypool = apr_psprintf(pconf, "/tmp/httpd_shm_delay.%ld", 
>>>>> (long int)getpid());
>>>> 
>>>> 
>>>> I think that the location of the shmfile must be on a filesystem of a 
>>>> special type, namely tmpfs, which maps in memory and not on disk. Execute 
>>>> "mount" and check if you have such filesystems mounted. For example on my 
>>>> Linux machine:
>>>> 
>>>> $ mount
>>>> /dev/sda6 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
>>>> tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=398160k)
>>>> /dev/sda9 on /tmp type ext4 (rw,relatime,data=ordered)
>>>> 
>>>> As you see, / and /tmp are of disk partitions while /run/shm has a 
>>>> filesystem of type tmpfs.
>>>> 
>>>> I suggest to change the code and use a different location from /tmp/... On 
>>>> Linux the shared memory is often created in /run/shm/*. I have no 
>>>> experience with Mac OS X.
>>>> 
>>>> The cleanest way would be to implement what's written in the commentary of 
>>>> the code above, namely the possibility to specify the path by an 
>>>> evrionment variable or from a configuration directive.
>>>> 
>>>> Sorin
>>>> 
>>> 
>> 
> 

Reply via email to