Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - SPEED

Страницы: [1]
1
Не знаю куда конкретно писать данный вопрос, но решил что сюда.

Вообщем есть сайт на выделенном сервере.
Сайт написан на perl. Используется БД Mysql.
Когда на сайте 5-10 человек сайт летает.
Планировалось чтобы сайт выдерживал нагрузку 500-1000 человек (обновлений страниц, хитов) в рамках минуты.
Но делая простейший перл скрипт:

#!/usr/bin/perl

use DBI;

my $mod_date = gmtime;
print "Last-Modified: ", $mod_date, " GMT"; # always modified
print "Expires: Fri, Jun 12 1981 08:20:00 GMT\\n";
print "Cache-Control: no-cache, must-revalidate\\n";
print "Pragma: no-cache\\n";

print "Content-type: text/html; Charset=utf-8\\n\\n";

$mysql_user_db = \'\';
$mysql_password_db = \'\';
$mysql_base_name = \'\';
$mysql_host_url = \'\';

my($user_db) = $mysql_user_db;
my($password_db) = $mysql_password_db;
my($base_name) = $mysql_base_name;
my($dsn) = "DBI:mysql:$base_name:$mysql_host_url";

$dbh = DBI->connect($dsn, $user_db, $password_db);

print "Hello, world!";

$dbh->disconnect();

Т.е. просто коннектимся к БД и печатаем строчку. При стресс-тесте в 1 минуту получаем
Number of hits: 967
Requests per Second: 16.12

В момент стресс теста загрузка процессоров 2-х процессорного сервера 50-70% для вышенаписанного кода.
Если же еще в момент теста браузером заходить на сайт то страница грузится 1-3 секунды. Бывает и 10 секунд грузится. Т.е. как-то непонятно.
Если же к текущему коду добавить несколько запросов на получение данных из БД то уже все цифры увеличиваются, загрузка процессора 85-95%. Страницы через браузер грузятся 3-7 секунд. Бывает 10-20.
Нормальны ли указанные цифры или нет? Если этого недостаточно могу дополнительные цифры дать.

Не могу понять в чем проблема.

2
Perl / Регулярник для замены в шаблоне
« : 26 Ноября 2006, 01:56:44 »
Если говорить о примере с хешем:

my $shablon = qq{text %%shablon_text%% %%shablon_text1%% %%shablon_text2%% text};

my $shablon_text = "замена шаблона";
my $shablon_text1 = "замена шаблона1";
my $shablon_text2 = "замена шаблона2";

my %shablon_text;

while($shablon =~ /%%(.*?)%%/ig)
{
   $shablon_text{$1} = ${$1};
}

my $text_shablon = $shablon;

$text_shablon =~ s/%%(.*?)%%/$shablon_text{$1}/ig;

print $text_shablon;


Но опять же ${$1} внутри while не заменяется на нужную переменную.

3
Perl / Регулярник для замены в шаблоне
« : 26 Ноября 2006, 01:32:21 »
Такой вариант был.
Однако, допустим мы не знаем какие переменные есть в шаблоне, которые надо заменять.

В таком случае нам надо дополнительно обрабатывать шаблон на получение хеша всех переменных которые там есть. Правильно?
Дополнительная обработка шаблона - это дополнительное время генерации скрипта.

А есть какие-то варианты без хеша?

И попутный вопрос. Если бы не было use strict то можно использовать local - локальное определение переменной (в рамках функции), но strict не дает использоать local.

Есть еще какие нибудь варианты?

4
Perl / Регулярник для замены в шаблоне
« : 26 Ноября 2006, 00:02:56 »
Есть код:

my $shablon = qq{text %%shablon_text%% text};
my $shablon_text = "замена шаблона";
my $text_shablon = $shablon;
$text_shablon =~ s/%%(.*?)%%/${$1}/ig;
print $text_shablon;

При таком раскладе в переменной $shablon не происходит замены %%shablon_text%% на нужное значение.
Если убрать my у переменной $shablon_text то все работает, но необходимо объявить переменную как my в рамках функции.
Почему не работает с my? И как быть?

5
Perl / Чтение Excel файла
« : 21 Октября 2004, 11:03:17 »
Думал над этим вариантом тоже...
Но все равно перед тем как приконнектиться к файлу все равно придется его открывать, а это опять память, которой не хватит.

ПОэтому решил все таки csv, а если точнее то текстовый файл с разделителями табуляции.

6
Perl / Чтение Excel файла
« : 20 Октября 2004, 11:53:54 »
Ну такой вариант в принципе я тоже продумал... :)
Но мне не нравится сама суть csv - потому что люди обычно работают в экзеле и потом им надо куда-то сохранять... с определенными разделителями...

А реально как нить из экзелевского файла брать по определенному числу строк?

7
Perl / Чтение Excel файла
« : 19 Октября 2004, 15:21:12 »
Ситуация следующая.
На хостинге стоят ограничения по используемой памяти скриптом.
Файл xls весит более чем 1 мб и в нем более 5000 строк данных.
Необходимо перенести данный файл в БД MySQL.

Использую ParseExcel

use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::FmtUnicode;

my $oExcel = new Spreadsheet::ParseExcel;
my $oFmtR = Spreadsheet::ParseExcel::FmtUnicode->new(Unicode_Map => "CP1251");
my $oBook = $oExcel->Parse("$file", $oFmtR);

но последнюю строчку данного кода скрипт не заканчивает по причине нехватки памяти процессу. Проверил у себя локально perl заюзал порядка 40 мб памяти, на хостинге же отведено 32 мегабайта.

Какие будут предложения по поводу реализации перевода данных из экзеля в БД MySQL?

Не предлагать следующие варианты:
1. Сохранить xls в csv - все равно может попасться файл который будет много весить и опять будет та же ошибка
2. Разбить файл на более мелкие

Мне приходит в голову что можно попробовать брать по, например, 100 строчек из файла. Но как это реализовать на parseexel?

Ну вообщем пишите какие будут предложения.
Желательно учитывать следующее:
1. файл может весить до 20мб
2. количество записей может быть до 100000.

Страницы: [1]