Paul Hammant <paul_at_hammant.org> writes:
> Hey Philip, starting from scratch, I can reproduce "Can't find a temporary
> directory" errors in /var/log/apache2/error.log for PUT when the boot drive
> is pretty much full, and the repository's drive has 3 spare terabytes.
Ah, it's not running out of space in tmp, rather it is failing to find
tmp. There is a behaviour difference between Subversion 1.9 and 1.10
here: each Apache child process using 1.9 will create two zero-length
files in tmp, the first is APR finding tmp the second is Subversion
getting the default file permissions. 1.10 doesn't use tmp for this
purpose and the file is created in the repository.
Note: the files created in tmp by 1.9 are zero length so should not
affect performance of the PUT.
APR should detect most tmp dirs automatically via apr_temp_dir_get:
Your system must have some more exotic tmp dir setup, a per-user tmp
perhaps? If you tell us what your tmp looks like then perhaps we can
fix APR to detect it automatically. Do other commands such as 'mktemp'
locate your tmp dir?
If you want to trace the file IO of Apache you can use
strace -f -p NNN
where NNN is the process ID of an Apache child process. (Apache has a
top level process listening on the socket and child processes handling
the requests.) You may want to trace every child process, or configure
Apache to use only one child process, or repeat the operation until the
chosen child is triggered. strace show all system calls by default you
can restrict it with things like:
strace -f -etrace=open,write,close,rename -p NNN
Received on 2017-07-15 18:01:10 CEST