|
|
|
[PERL] Кеширование данных в памяти
|
|||
|---|---|---|---|
|
#18+
Есть система мониторинга со следующими особенностями: 1. Система позволяет писать собственные скрипты для нестандартных опросов или нестандартных устройств. 2. Результаты опросов сохраняются в источники данных - rrd-файлы (файлы кольцевой БД). 3. Архитектура системы такова, что для каждого источника данных может указываться один скрипт. 4. У нескольких источников данных может быть указан один и тот же скрипт; это удобно для модернизации и доработки скрипта, если он предназначен для устройств конкретного типа. 5. Скрипт может за один вызов опросить все необходимые данные; опрос осуществляется по SNMP и эффективнее один раз подключиться и получить десять параметров, чем подключаться десять раз и получать по одному параметру. 6. Однако система устроена так, что она будет вызывать этот скрипт для каждого источника данных. 7. Проблему можно решить тем, что будет использоваться один rrd-файл, в который сохраняются все опрашиваемые данные. 8. Однако использование таких комплексных rrd-файлов неудобно в обслуживании — если вдруг нужно изменить структуру файла (добавить новое поле или изменить существующие), нет инструментов для таких операций, необходимо пересоздавать файл с потерей данных. Поэтому для удобства обслуживания лучше использовать несколько rrd-файлов вместо одного. У меня такая мысль. 2. Скрипт опрашивает устройство, получает необходимые данные. Эти данные он отдает в систему, а также сохраняет их во временный файл, добавив временную метку (timestamp). 1. При запуске скрипт проверяет наличие временного файла и актуальность временной метки; если данные в файле не старше определенного времени (60 секунд), то вместо выполнения пункта 2 скрипт использует данные из временного файла. Собственно такая схема работает, но можно ли обойтись вообще без временного файла? Между опросами скрипт не существует; на каждый опрос запускается инстанс Perl с указанным скриптом. ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2012, 10:08 |
|
||
|
[PERL] Кеширование данных в памяти
|
|||
|---|---|---|---|
|
#18+
Вопрос. Похоже что разные инстансы скрипта запускаются одновременно и проверка по файлу не срабатывает. Что-то даже не соображу, как можно это обойти. Случайную задержку при запуске пробовал сделать, но способ не самый лучший. Сейчас код такой: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2012, 12:51 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38055853&tid=1464384]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
225ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 559ms |

| 0 / 0 |
