blob: 35139365afad1f428e0f29b6368cebfe50d1f1fb [file] [log] [blame]
.. _admin-plugins-buffer-upload:
Buffer Upload Plugin
********************
.. Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
The Buffer Upload plugin offers the following features
Installation
============
Configuration can be explicitly specified as a parameter in ``plugin.config`` ::
buffer_upload.so /FOOBAR/upload.conf
Memory buffering (buffer the entire POST data in IOBuffer before connecting to OS)
==================================================================================
Memory buffer size is configured with "mem_buffer_size" in config file. Default and minimum value is 32K. You can
increase it in the config file. If the size of a request is larger than the "mem_buffer_size" value specifiied in the
config file, then the upload proxy feature will be disabled for this particular request
Disk buffering (buffer the entire POST data on disk before connecting to OS)
============================================================================
1. Disk async IO is used. AIO api call only involves certain amount of threads. The number of threads is configurable in
plugin's config file (default is 4)
2. Directories and files are generated on disk . Base directory is /FOOBAR/var/buffer_upload_tmp/ (configurable in
config file). Number of subdirectories is 64 (configurable in config file). Filename are randomly generated. Files will
be removed when the entire data have been sent out to OS . At startup time, dangling files are removed (left on disk due
to transaction interruption or traffic server crash)
3. Default chunk size when reading from disk is 16K, configurable in config file
Trigger POST buffering on certain URLs
======================================
1. Certain URLs will be provided in a plain text file (one URL each line)
2. Specify filename in config file by "url_list_file"
3. max length of each URL is 4096 (configurable in config file)
4. use exact match, don't support regex for now
Other Features
==============
1. Default buffering mode is disk aio buffering mode. To turn off disk buffering, add a "use_disk_buffer 0" line in
config file
2. All request headers inlcuding cookies plus the entire POST data will be buffered (either in memory or on disk)
Configuration File
==================
sample config file ::
use_disk_buffer 1
convert_url 1
chunk_size 1024
url_list_file /tmp/url_list.conf
max_url_length 10000
base_dir /tmp/test1
subdir_num 100
thread_num 10
mem_buffer_size 40000