Mam taki oto skrypt wpisujący dane z Nagiosa do bazy danych. Skrypt jest wywoływany średnio 8 razy na sekundę.
Problem jest taki, że cały czas po około godzinie działania skrypt zawiesza program który go wywołuje (Nagios <defunct>).
Całe środowisko postawione jest na wirtualnej maszynie:
521 MB ramu.
Dodatkowy wirtualny dysk wpięty na baze danych.
Każdorazowy wpis do bazy nie ma więcej niż 22 kb czystego tekstu.
Baza przyrasta dziennie około 1 GB. Baza ma wielkość 26 GB na dziś.
Może wystarczy przenieść wirtualne środowisko do "normalnego" systemu?
Chyba ze w skrypcie jest jakiś błąd, albo w ustawieniach MySQL?
<?php class dataBase { function dataBase() { $user = 'root'; $pass = 'passwd'; $host = 'localhost'; $base = 'db_test'; if(!$this->conn) { } { } } function getHostId($name) { $sql = "SELECT host_id FROM host_data WHERE host_name = '$name'"; if(!$res) { } else return $row[0]; } function getServiceId($name) { $sql = "SELECT id FROM service_name WHERE name = '$name'"; if(!$res) { } else return $row[0]; } function insertRecordToServiceData($time, $hostName, $hostAlias, $serviceName, $serviceState, $serviceOutput, $serviceLongOutput, $servicePerfData=0) { $hostId = $this -> getHostId($hostName); if(!$hostId) { $hostId = $this -> insertRecordToHostData($hostName, $hostAlias); } $serviceId = $this -> getServiceId($serviceName); if(!$serviceId) { } $this -> insertRecordHostService($hostId, $serviceId); $sql = "INSERT INTO service_data (timet, host_id, service_id, service_state, service_output, service_long_output, service_perf_data) VALUES ('$time', '$hostId', '$serviceId', '$serviceState', '$serviceOutput', '$serviceLongOutput', '$servicePerfData') "; if(!$res) { } } function insertRecordHostService($hostId, $serviceId) { $sql = "SELECT * FROM host_service WHERE host_id = '$hostId' AND service_id = '$serviceId'"; if(!$res) { } if($row===FALSE) { $sql = "INSERT INTO host_service (host_id, service_id) VALUES( '$hostId', '$serviceId')"; if(!$res) { } } } function insertRecordToHostData($hostName, $hostAlias) { $sql = "INSERT INTO host_data (host_name, host_alias) VALUES ('$hostName', '$hostAlias') "; if($res) { } if($id) { } return $id; } var $conn = null; } $db = new dataBase(); $db -> insertRecordToServiceData($_SERVER['argv'][1], $_SERVER['argv'][2], $_SERVER['argv'][3], $_SERVER['argv'][4], $_SERVER['argv'][5], $_SERVER['argv'][6], $_SERVER['argv'][7], $_SERVER['argv'][8]); ?>