ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π·Π½Π°Π΅Ρ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΠΆΠ½Ρ Π»ΠΎΠ³ΠΈ Π΄Π»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ Π²ΡΠ±ΠΎΡ ΡΠ°ΡΡΠΎΡΡ ΠΈ ΡΠΏΠΎΡΠΎΠ±Π° Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ. ΠΠ΅Π΄Π°Π²Π½ΠΎ Π² Π±Π»ΠΎΠ³Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΠΆΠΎΠ½Π° Π‘ΠΊΠΎΠ»Π°ΡΠΎ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π½Π΅ΠΎΠ±ΡΡΠ½Π°Ρ, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΊΡΠ°ΠΉΠ½Π΅ Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ ΠΈΠ΄Π΅Ρ: Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π° Π½Π΅ ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΠΎΠ±ΡΡΠΈΠΉ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΡΠΌΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΈ ΡΡΠΎ ΡΡΠΎ ΠΌΠ΅Π½ΡΠ΅Ρ Π² ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅.
π Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄: ΡΡΡΡΡΠΈΠΊΠΈ ΠΈ ΠΈΡ Π»ΠΎΠ²ΡΡΠΊΠΈ
ΠΠ±ΡΡΠ½ΠΎ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄: Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π² Π»ΠΎΠ³ ΠΊΠ°ΠΆΠ΄ΡΠ΅ N ΡΠΎΠ±ΡΡΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ 1000 ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°ΠΏΠΈΡΡ:
num_events_processed = 0
while True:
event = read_event_from_queue()
process_event(event)
num_events_processed += 1
if num_events_processed % 1000 == 0:
logger.info("ΠΠ±ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ 1000 ΡΠΎΠ±ΡΡΠΈΠΉ.")
ΠΡΠΎ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΠΎΠ½ΠΎ Π½Π΅ΡΡΡ Π² ΡΠ΅Π±Π΅ ΡΠΊΡΡΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ:
- π₯ ΠΠΈΠΊΠΎΠ²Π°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ°:
Π ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΡΠΎΠΊΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ Π»ΠΎΠ³ΠΈ ΡΡΠΏΠ»ΡΡΡΡ Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Ρ, ΡΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° Π΄ΠΈΡΠΊΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π·Π°ΠΌΠ΅Π΄Π»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. - π€ Π’ΠΈΡΠΈΠ½Π° Π² ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ:
Π ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π½ΠΈΠ·ΠΊΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅, Π»ΠΎΠ³ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΠΊΡΠ°ΠΉΠ½Π΅ ΡΠ΅Π΄ΠΊΠΎ (ΠΊΠ°ΠΆΠ΄ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ½ΡΡ ΠΈΠ»ΠΈ ΡΠ°ΡΠΎΠ²), ΠΈ Π²Ρ ΡΠ΅ΡΡΠ΅ΡΠ΅ ΠΎΡΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. - πΎ ΠΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ Π»ΠΎΠ³ΠΎΠ²:
ΠΠ΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠ΅ Π²ΡΠΏΠ»Π΅ΡΠΊΠΈ Π»ΠΎΠ³ΠΎΠ² ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ Π½Π΅Π½ΡΠΆΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΡΠΎΠ³ΠΎ ΡΡΠΎΠΈΡ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ Π°Π½Π°Π»ΠΈΠ·.
β±οΈ ΠΠΎΠ²ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄: Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
ΠΠΆΠΎΠ½ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΈ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ β Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π² Π»ΠΎΠ³ Π½Π΅ ΡΠ΅ΡΠ΅Π· ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠ±ΡΡΠΈΠΉ, Π° ΡΠ΅ΡΠ΅Π· ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ):
last_time_logged = time.time()
num_events_processed_since_last_log = 0
while True:
event = read_event_from_queue()
process_event(event)
num_events_processed_since_last_log += 1
current_time = time.time()
if current_time - last_time_logged >= 1.0:
logger.info(f"ΠΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ {num_events_processed_since_last_log} ΡΠΎΠ±ΡΡΠΈΠΉ.")
num_events_processed_since_last_log = 0
last_time_logged = current_time
π ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π³Π΅Π½ΠΈΠ°Π»ΡΠ½ΠΎ?
ΠΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΠ·Π±Π°Π²Π»ΡΠ΅Ρ ΠΎΡ Π΄Π²ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°:
- π― Π‘ΡΠ°Π±ΠΈΠ»ΡΠ½Π°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ°:
ΠΠ½ΡΠ΅ΡΠ²Π°Π»Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΡΠΎΡΠ½Π½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ Π²ΡΠ΅Π³Π΄Π° Π·Π½Π°Π΅ΡΠ΅, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΏΠΎΠΏΠ°Π΄ΡΡ Π² Π»ΠΎΠ³ Π·Π° ΠΌΠΈΠ½ΡΡΡ, ΡΠ°Ρ ΠΈΠ»ΠΈ ΡΡΡΠΊΠΈ. - π Π§ΡΡΠΊΠΈΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Β«ΡΠ΅ΡΠ΄ΡΠ΅Π±ΠΈΠ΅Π½ΠΈΡΒ» ΡΠΈΡΡΠ΅ΠΌΡ:
ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΌΠ°Π»ΠΎ, Π²Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π»ΠΎΠ³ΠΈ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π±ΡΡΡΡΠΎ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΠ±ΠΎΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΠ»ΠΎΡΡ, Π·Π½Π°ΡΠΈΡ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Β«Π·Π°ΠΌΡΡΠ·Π»ΠΎΒ» ΠΈΠ»ΠΈ Β«ΡΠΏΠ°Π»ΠΎΒ»). - π ΠΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ²:
Π£ΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ Π½Π΅Π½ΡΠΆΠ½Π°Ρ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΡΡΠΎ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅, ΠΏΠΎΠΈΡΠΊ ΠΈ Π°Π½Π°Π»ΠΈΠ· Π΄Π°Π½Π½ΡΡ .
π§ ΠΠ°ΠΊ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ?
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΡΡΡΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΌΠΈ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ (ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½, Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ°):
import os
log_interval = float(os.getenv("LOG_INTERVAL_SECONDS", 1.0))
last_time_logged = time.time()
events_processed = 0
while True:
event = read_event_from_queue()
process_event(event)
events_processed += 1
current_time = time.time()
if current_time - last_time_logged >= log_interval:
logger.info(f"[{log_interval}s] ΠΠ±ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ {events_processed} ΡΠΎΠ±ΡΡΠΈΠΉ.")
events_processed = 0
last_time_logged = current_time
π ΠΠΈΡΠ½ΡΠΉ Π²Π·Π³Π»ΡΠ΄ Π°Π²ΡΠΎΡΠ° ΡΡΠ°ΡΡΠΈ
ΠΠ½Π΅ Π»ΠΈΡΠ½ΠΎ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄Π½ΠΎ Π²ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΡ DevOps ΠΈ SRE, Π³Π΄Π΅ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΈ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΡΡΡ β ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΡΡΠΈΡΡ ΡΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ Π»ΡΠ±ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠ΅. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ΅Π½Π½ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΈ ΠΌΠ΅ΡΡΠΈΠΊ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Prometheus, Grafana ΠΈΠ»ΠΈ ELK-ΡΡΠ΅ΠΊ, Π³Π΄Π΅ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΡΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠ΄Π½Π°ΠΊΠΎ Π²Π°ΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π³Π΄Π΅ Π²Π°ΠΆΠ½Π° ΡΠΎΡΠ½Π°Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ (ΡΠΎΡΠ³ΠΎΠ²ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ), ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡΠΎΠΈΡ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ β ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡΡ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΡΡΠ°Π·Ρ ΠΏΡΠΈ ΠΈΡ Π½Π°ΡΡΡΠΏΠ»Π΅Π½ΠΈΠΈ.
ποΈ ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ
ΠΠ΄Π΅Ρ, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Π°Ρ ΠΠΆΠΎΠ½ΠΎΠΌ Π‘ΠΊΠΎΠ»Π°ΡΠΎ, Ρ ΠΎΡΡ ΠΈ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎΠΉ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΈΠ½Π½ΠΎΠ²Π°ΡΠΈΠ΅ΠΉ. ΠΠ½Π° ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΡΡΡΠΊ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², Π° Π½ΠΎΠ²ΡΡ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΡ Π²ΠΎΡΠΏΡΠΈΡΡΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²Π΅ΡΡΠΈ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π·Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ:
- β ΠΡΠ»ΠΈ Π²Π°ΠΌ Π²Π°ΠΆΠ½Π° ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ, ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΡΡΡ ΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
- β οΈ ΠΡΠ»ΠΈ ΠΆΠ΅ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠΎΠ³ΠΎΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΡΠΉΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ.
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π² ΡΠ²ΠΎΡΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΠΈ Π²Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ΄ΠΈΠ²ΠΈΡΠ΅ΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅ ΡΡΠ°Π½Π΅Ρ ΠΆΠΈΡΡ ΠΈ Π²Π°ΠΌ, ΠΈ Π²Π°ΡΠ΅ΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅.
π ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΡΡΠ°ΡΡΡ ΠΠΆΠΎΠ½Π° Π‘ΠΊΠΎΠ»Π°ΡΠΎ: Log by time, not by count