Перейти к содержанию

Wade

Members
  • Постов

    4
  • Зарегистрирован

  • Посещение

Весь контент Wade

  1. Добрый день. Столкнулся с очень странной историей. Имеется сервер debian 6+openvpn+postgresql+apache+php Сервер используется для сбора статистики с информационных терминалов - каждый терминал создает через gprs модем vpn туннель до сервера, и скидывает разную статистику. На этом же сервере есть веб морда для клиентов. В последнее время с сервером начинается странное - через 3 часа 45 минут он перестает отвечать postgresql c ошибкой too many connection. В процессах висит в 3-4 раза больше апачей из-за этого. Но самое интересное - отваливается внутренний интерфейс для openvpn. Т.е на внешнем интерфейсе все ок, а по туннелю не подключиться. Причем странное расписание - трое суток подряд через каждые 3 часа 45 минут все зависает примерно на 5 минут, а потом на 4 или 5 дней все нормально. Честно говоря уже и не знаю, что смотреть - в кроне ничего нет,спам вроде не отправляется, по логам апача вроде нет подозрительных запросов. Что делать? Буду рад любым вариантам)
  2. Приветствую. Для того чтобы устройство на ttyACM0 правильно функционировало, необходимо чтобы программа открывала его в монопольном режиме, например program открывает /dev/ttyACM0, тогда команда echo "aaaa" > /dev/ttyACM0 должна закончиться неудачей. Minicom это делает, а у меня не получается. Вот код открытия: fd = open(device, O_RDWR | O_EXCL ); if (fd == -1) { /* * Could not open the port. */ perror(device); //return NULL; } //fcntl(fd, F_SETFL, FNDELAY); struct flock lock; lock . l_type = F_WRLCK; lock . l_whence = SEEK_SET; lock . l_start = 0; lock . l_len = 0; if (fcntl (fd, F_SETLK, & lock) < 0) { perror(device); //return NULL; } int status; ioctl(fd, TIOCMGET, &status); status &= ~TIOCM_RTS; status &= ~TIOCM_DTR; status &= ~TIOCM_CTS; status &= ~TIOCM_DSR; if (ioctl(fd, TIOCMSET, &status)) { perror("ioctl"); //return 0; } struct termios options; /* * Get the current options for the port... */ tcgetattr(fd, &options); cfsetispeed(&options, baud_rate); cfsetospeed(&options, baud_rate); options.c_cflag &= ~PARENB; options.c_cflag &= CSTOPB; options.c_cflag &= ~CSIZE; options.c_cflag |= CS8; options.c_cflag &= ~CRTSCTS; options.c_oflag &= ~OPOST; //raw output options.c_lflag &= ~(ICANON | ECHO | ISIG); /* * Enable the receiver and set local mode... */ options.c_cflag |= (CLOCAL | CREAD | baud_rate); /* * Set the timeouts VMIN is the minimum amount of characters to read */ //options.c_cc[VMIN] = 0; /* * The amount of time to wait for the amount of data specified by VMIN in tenths of a second */ //options.c_cc[VTIME] = 0; /* * Set the new options for the port... */ tcsetattr(fd, TCSANOW, &options); Подскажите, что не так. Либо кусок кода.где работает блокировка. Спасибо
  3. Добрый день. Ubuntu 10.10 У меня существует устройство /dev/ttyACM0 C этим устройством работает программа program, т.е. если сделать lsof /dev/ttyACM0, то выведется именно program В какой то момент устройство перестает работать. Это случается если на него послать команду отличную от текущего протокола. Т.е. если во время работа program из другой консоли отправить echo "aaaa" > /dev/ttyACM0, то устройство перестает работать. Так вопрос в том как отловить процесс, который отсылает какой то ввод на это устройство не по протоколу. В бесконечном цикле lsof не получилось выявить процесс. Какие еще существуют варианты? Либо возможно ли весь ввод на /dev/ttyACM0 логировать где-нибудь? По такому логу я бы смог отловить проблему. Спасибо.
  4. Добрый день. Мне достался сервер LAMP под fedora 6. Все установил, но столкнулся с проблемой, что текущий корпоративный сайт написан на php, где коннетором к бд mysqli, а не обычный mysql. Соответственно в стандартной сборке его нет( Как пересобрать php с поддержкой mysqli? Заранее спасибо
×
×
  • Создать...