У меня есть веб-приложение, которое выполняет множество запросов ajax (обновляет данные с помощью сетки).
Когда я использую JMeter для выполнения стресс-теста с 20 потоками и 10 циклами, мое веб-приложение не может подключиться к базе данных (Oracle) в 3-м примере.
Мой сервер имеет следующую конфигурацию:
Physical Server: Dell r710 , 01 processor Xeon 2.66 Ghz 06 Cores, RAM 32 GB, 05 Disk of 500GB
Virtual Server: 01 Processor Xeon 04 Cores, 03 GB RAM, 36 GB of hard disk.
soporte@olivo:~$ df -h
S.ficheros Tamaño Usado Disp Uso% Montado en
/dev/sda3 5,6G 2,5G 2,8G 48% /
none 2,0G 172K 2,0G 1% /dev
none 2,0G 0 2,0G 0% /dev/shm
none 2,0G 916K 2,0G 1% /var/run
none 2,0G 0 2,0G 0% /var/lock
none 2,0G 0 2,0G 0% /lib/init/rw
/dev/sda1 92M 26M 62M 30% /boot
/dev/mapper/vg1-lv1 28G 7,5G 19G 30% /var
soporte@olivo:~$
APACHE:
Apache/2.2.14 (Ubuntu)
PHP:
PHP 5.3.2-1ubuntu4.9 with Suhosin-Patch (cli)
SO:
Ubuntu 10.04.2 LTS
Welcome to the Ubuntu Server!
* Documentation: http://www.ubuntu.com/server/doc
System information as of Tue Dec 27 17:15:34 PET 2011
System load: 0.1 Memory usage: 17% Processes: 134
Usage of /: 44.6% of 5.50GB Swap usage: 0% Users logged in: 1
Graph this data and manage this system at https://landscape.canonical.com/
Кроме того, это веб-приложение выполняет множество запросов через ajax в фоновом режиме, поэтому, когда есть 10 или более пользователей, эти запросы ajax, которые выполняются в фоновом режиме, приводят к падению приложения (при последующих подключениях возникает ошибка ORA-12520).
Я бы знал, как избежать остановки соединения сервера с базой данных при одновременном подключении большого количества пользователей (20 и более).
Это вопрос кодирования или вопрос сервера? Ответом на оба вопроса может быть использование пула соединений с базой данных, но то, как вы это сделаете, зависит от слишком большого количества переменных, на которые я не могу ответить, основываясь на том, что вы нам сказали.