안녕하세요, 다음과 같은 테이블이 있습니다.
DateTime Ip
2016-12-21 17:00:01 | 127.0.0.1
2016-12-21 17:00:01 | 127.0.0.1
2016-12-21 17:00:03 | 127.0.0.1
2016-12-21 17:00:05 | 127.0.0.2
2016-12-21 17:00:06 | 127.0.0.2
2016-12-21 17:00:06 | 127.0.0.1
2016-12-21 17:00:07 | 127.0.0.2
2016-12-21 17:00:08 | 127.0.0.2
2016-12-21 17:00:08 | 127.0.0.1
2016-12-21 17:00:08 | 127.0.0.1
현재 특정 기간 (예 : 5 초)에서 IP의 초당 요청을 계산하려면 다음을 수행합니다.
SELECT Ip, total/diff_in_secs as Rps FROM (
SELECT Ip, count(*) as total, MAX(DateTime), MIN(DateTime), TIMESTAMPDIFF(SECOND, MIN(DateTime), MAX(DateTime)) as diff_in_secs
FROM requests WHERE DateTime >= '2016-12-21 17:00:01' AND DateTime <= '2016-12-21 17:00:05'
GROUP BY Ip
) as base
ORDER BY Rps Desc
나는 그 기간 동안 각 IP의 분산과 표준 편차를 rps에서 수행하는 방법을 알아 내려고 노력하고 있습니다. 나는이 답변의 개념을 거의 성공하지 않고 적용하려고합니다 . 특정 날짜에 SQL / PHP를 사용하여 두 개의 다른 행 / 열에서 두 숫자의 평균, 분산 및 표준 편차를 계산합니다.
감사합니다
이것으로 시도
select
requests_per_sec.ip,
avg(requests_per_sec.n) as Avg_Req_Per_Sec,
std(requests_per_sec.n) as Std_Req_Per_Sec
from
(select ip, count(ip) as n, datetime
from requests
group by datetime, ip) requests_per_sec
group by requests_per_sec.ip
내부 선택의 크기를 줄이려면 다음 UNIX_TIMESTAMP(datetime) div 5
과 같이 5 초마다 요청을 계산할 수도 있습니다.
select
requests_per_sec.ip,
avg(requests_per_sec.n) as Avg_Req_Per_Sec,
std(requests_per_sec.n) as Std_Req_Per_Sec
from
(select ip, count(ip) as n, datetime
from requests
group by UNIX_TIMESTAMP(datetime) div 5, ip) requests_per_sec
group by requests_per_sec.ip
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다