LinuxForum.Fans
Тема

OpenSuse + apache2 + php5 +mysql = trouble

Автор: crimebot 10 сообщений 3041 просмотров
#303820

В наличии имеется:
аппаратная часть: intel i5 (4х2.5GHz), 8 гигов ОЗУ, sata-hdd 250GB, шина на материнке 1.3 гиггагерца, видео интегрированное интеловское.
программная часть: OpenSUSE 12.1 (Asparagus) дефолтная без обновлений, apache2, php5, mysql 5.5.16
Задача: апач с помощью пхп-скриптов генерирует два файла: pdf и xml, ссылка на которые отдается конечному пользователю ресурса.
Из дефолтных настроек менялось только количество оперативки в php.ini для обработки одного процесса, max_post_size и max_execution_time.
На данный момент имею проблему с тем, что обработка информации проводится с бешеными скоростями, файлы генерятся в считанные доли секунды (размер файлом максимум 1 мегабайт), но при этом пользователь перед их скачиванием ожидает порядка 30 секунд в любой ОС: Win, Linux, MacOS, Android. А это до дикости раздражает сотрудников. Чем больше файл - тем больше время ожидания. Подскажите, плз, куда копать
conf-файлы ниже

#303877
Показать
text
httpd.conf:

Include /etc/apache2/uid.conf

Include /etc/apache2/server-tuning.conf

ErrorLog /var/log/apache2/error_log

Include /etc/apache2/sysconfig.d/loadmodule.conf

Include /etc/apache2/listen.conf

Include /etc/apache2/mod_log_config.conf

Include /etc/apache2/sysconfig.d/global.conf

Include /etc/apache2/mod_status.conf Include /etc/apache2/mod_info.conf

Include /etc/apache2/mod_usertrack.conf

Include /etc/apache2/mod_autoindex-defaults.conf

TypesConfig /etc/apache2/mime.types DefaultType text/plain Include /etc/apache2/mod_mime-defaults.conf

Include /etc/apache2/errors.conf

Include /etc/apache2/ssl-global.conf

<Directory /> Options None AllowOverride None Order deny,allow Deny from all </Directory>

AccessFileName .htaccess <Files ~ "^\.ht"> Order allow,deny Deny from all </Files>

DirectoryIndex index.html index.html.var

Include /etc/apache2/default-server.conf

Include /etc/apache2/sysconfig.d/include.conf

Include /etc/apache2/vhosts.d/*.conf

#303880
Показать
text
php.ini

engine = On

short_open_tag = Off

asp_tags = Off

precision = 14

y2k_compliance = On

output_buffering = 4096

zlib.output_compression = Off

implicit_flush = Off

unserialize_callback_func =

serialize_precision = 17

allow_call_time_pass_reference = Off

safe_mode = Off

safe_mode_gid = Off

safe_mode_include_dir =

safe_mode_exec_dir =

safe_mode_allowed_env_vars = PHP_

safe_mode_protected_env_vars = LD_LIBRARY_PATH

disable_functions =

disable_classes =

expose_php = On

max_execution_time = 600

max_input_time = 60

memory_limit = 5120M

error_reporting = E_ALL & ~E_DEPRECATED

display_errors = Off

display_startup_errors = Off

log_errors = On

log_errors_max_len = 1024

ignore_repeated_errors = Off

ignore_repeated_source = Off

report_memleaks = On

track_errors = Off

html_errors = Off

variables_order = "GPCS"

request_order = "GP"

register_globals = Off

register_long_arrays = Off

register_argc_argv = Off

auto_globals_jit = On

post_max_size = 128M

magic_quotes_gpc = Off

magic_quotes_runtime = Off

magic_quotes_sybase = Off

auto_prepend_file =

auto_append_file =

default_mimetype = "text/html"

include_path = ".:/usr/share/php5:/usr/share/php5/PEAR"

doc_root =

user_dir =

enable_dl = Off

file_uploads = On

upload_max_filesize = 2M

max_file_uploads = 20

allow_url_fopen = On

allow_url_include = Off

default_socket_timeout = 60

date.timezone = 'UTC'

pdo_mysql.cache_size = 2000

pdo_mysql.default_socket=

define_syslog_variables = Off

SMTP = localhost

smtp_port = 25

mail.add_x_header = On

sql.safe_mode = Off

odbc.allow_persistent = On

odbc.check_persistent = On

odbc.max_persistent = -1

odbc.max_links = -1

odbc.defaultlrl = 4096

odbc.defaultbinmode = 1

ibase.allow_persistent = 1

ibase.max_persistent = -1

ibase.max_links = -1

ibase.timestampformat = "%Y-%m-%d %H:%M:%S"

ibase.dateformat = "%Y-%m-%d"

ibase.timeformat = "%H:%M:%S"

mysql.allow_local_infile = On

mysql.allow_persistent = Off

mysql.cache_size = 2000

mysql.max_persistent = -1

mysql.max_links = -1

mysql.default_port =

mysql.default_socket =

mysql.default_host =

mysql.default_user =

mysql.default_password =

mysql.connect_timeout = 60

mysql.trace_mode = Off

mysqli.max_persistent = -1 mysqli.allow_persistent = Off

mysqli.max_links = -1

mysqli.cache_size = 2000

mysqli.default_port = 3306

mysqli.default_socket =

mysqli.default_host =

mysqli.default_user =

mysqli.default_pw =

mysqli.reconnect = Off

mysqlnd.collect_statistics = On

mysqlnd.collect_memory_statistics = Off

pgsql.allow_persistent = On

pgsql.auto_reset_persistent = Off

pgsql.max_persistent = -1

pgsql.max_links = -1

pgsql.ignore_notice = 0

pgsql.log_notice = 0

sybct.allow_persistent = On

sybct.max_persistent = -1

sybct.max_links = -1

sybct.min_server_severity = 10

sybct.min_client_severity = 10

bcmath.scale = 0

session.save_handler = files

session.save_path = "/var/lib/php5"

session.use_cookies = 1

session.use_only_cookies = 1

session.name = PHPSESSID

session.auto_start = 0

session.cookie_lifetime = 0

session.cookie_path = /

session.cookie_domain =

session.cookie_httponly =

session.serialize_handler = php

session.gc_probability = 1

session.gc_divisor = 1000

session.gc_maxlifetime = 1440

session.bug_compat_42 = Off

session.bug_compat_warn = Off

session.referer_check =

session.entropy_length = 32

session.entropy_file = /dev/urandom

session.cache_limiter = nocache

session.cache_expire = 180

session.use_trans_sid = 0

session.hash_function = sha256

session.hash_bits_per_character = 5

url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

mssql.allow_persistent = On

mssql.max_persistent = -1

mssql.max_links = -1

mssql.min_error_severity = 10

mssql.min_message_severity = 10

mssql.compatability_mode = Off

mssql.secure_connection = Off

tidy.clean_output = Off

soap.wsdl_cache_enabled=1

soap.wsdl_cache_dir="/tmp"

soap.wsdl_cache_ttl=86400

soap.wsdl_cache_limit = 5

ldap.max_links = -1

#303882
Показать
server-tuning.conf:

<IfModule prefork.c>
# number of server processes to start
# http://httpd.apache.org/docs/2.2/mod/mpm_common.html#startservers
StartServers 5
# minimum number of server processes which are kept spare
# http://httpd.apache.org/docs/2.2/mod/prefork.html#minspareservers
MinSpareServers 5
# maximum number of server processes which are kept spare
# http://httpd.apache.org/docs/2.2/mod/prefork.html#maxspareservers
MaxSpareServers 10
# highest possible MaxClients setting for the lifetime of the Apache process.
# http://httpd.apache.org/docs/2.2/mod/mpm_common.html#serverlimit
ServerLimit 150
# maximum number of server processes allowed to start
# http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxclients
MaxClients 150
# maximum number of requests a server process serves
# http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxrequestsperchild
MaxRequestsPerChild 10000
</IfModule>

<IfModule worker.c>
# initial number of server processes to start
# http://httpd.apache.org/docs/2.2/mod/mpm_common.html#startservers
StartServers 3
# minimum number of worker threads which are kept spare
# http://httpd.apache.org/docs/2.2/mod/mpm_common.html#minsparethreads
MinSpareThreads 25
# maximum number of worker threads which are kept spare
# http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxsparethreads
MaxSpareThreads 75
# upper limit on the configurable number of threads per child process
# http://httpd.apache.org/docs/2.2/mod/mpm_common.html#threadlimit
ThreadLimit 64
# maximum number of simultaneous client connections
# http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxclients
MaxClients 150
# number of worker threads created by each child process
# http://httpd.apache.org/docs/2.2/mod/mpm_common.html#threadsperchild
ThreadsPerChild 25
# maximum number of requests a server process serves
# http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxrequestsperchild
MaxRequestsPerChild 10000
</IfModule>

KeepAlive On

MaxKeepAliveRequests 1000

KeepAliveTimeout 30

<IfModule mod_setenvif.c>
#
# The following directives modify normal HTTP response behavior to
# handle known problems with browser implementations.
#
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

#
# The following directive disables redirects on non-GET requests for
# a directory that does not include the trailing slash. This fixes a
# problem with Microsoft WebFolders which does not appropriately handle
# redirects for folders with DAV methods.
# Same deal with Apple's DAV filesystem and Gnome VFS support for DAV.
#
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
BrowserMatch "^gnome-vfs" redirect-carefully
</IfModule>
#303922

А сами скрипты военная тайна???

#303948

как бы смешно ни было - не могу их выдать, ибо программеры ссылаются на некую коммерческую тайну. Интересовал вопрос - в самих конфигах какие-то грубые ошибки есть?

#303949

А если сначала сгенерить и взять по ссылке уже готовый? И да, что скрипт пишет в заголовке MIME на отдаваемый файл?

#303954
karl_muenhgausen написал:
А если сначала сгенерить и взять по ссылке уже готовый? И да, что скрипт пишет в заголовке MIME на отдаваемый файл?

со слов программеров именно так дело и обстоит: сервером генерится файл, после чего на него (уже сгенеренный, готовый) дается ссылка пользователю в виде всплывающего окна вот такого вида: http://img-fotki.yandex.ru/get/6424/11378266.0/0_a4ca0_78ec57e9_orig
После нажатия на линк "скачать" поступает запрос "куда сохранить" (в зависимости от настроек браузера) и минимум 30-ти секундное ожидание того, что сервер отдаст уже сгенерированный файл. Тестировалось на файлах размером не выше 100 килобайт (даже на модемном соединении, имхо, должны пролетать моментально). Mime-тип в самих скриптах прописан или нет - смогу уточнить только завтра уже, прогеры все посбежали:(

#304011

Вот что передается скриптом генерации:

text
header ("Content-Type: application/pdf");
header ("Accept-Ranges: bytes");
header ("Content-Length: ".filesize($file));
header ("Content-Disposition: attachment; filename='".$name.".pdf'");
#304921

решилось увеличением дисковых квот для апача и фтп... как связано - так и не понял:(

Войдите или зарегистрируйтесь, чтобы ответить.