Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
胡斌
/
srs
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
winlin
2014-05-08 15:45:51 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
a1fed1578975b252151aec03ef9fa3d7567e1d6e
a1fed157
1 parent
8388da63
add uptime, startup time, load to api
隐藏空白字符变更
内嵌
并排对比
正在显示
7 个修改的文件
包含
121 行增加
和
15 行删除
trunk/src/app/srs_app_config.cpp
trunk/src/app/srs_app_config.hpp
trunk/src/app/srs_app_http_api.cpp
trunk/src/app/srs_app_http_hooks.cpp
trunk/src/app/srs_app_server.cpp
trunk/src/kernel/srs_kernel_utility.cpp
trunk/src/kernel/srs_kernel_utility.hpp
trunk/src/app/srs_app_config.cpp
查看文件 @
a1fed15
...
...
@@ -1263,12 +1263,12 @@ void SrsConfig::print_help(char** argv)
argv
[
0
],
argv
[
0
],
argv
[
0
],
argv
[
0
]);
}
string
SrsConfig
::
get_
cwd
()
string
SrsConfig
::
cwd
()
{
return
_cwd
;
}
string
SrsConfig
::
get_
argv
()
string
SrsConfig
::
argv
()
{
return
_argv
;
}
...
...
trunk/src/app/srs_app_config.hpp
查看文件 @
a1fed15
...
...
@@ -149,8 +149,8 @@ private:
virtual
int
parse_argv
(
int
&
i
,
char
**
argv
);
virtual
void
print_help
(
char
**
argv
);
public
:
virtual
std
::
string
get_cwd
();
virtual
std
::
string
get_argv
();
virtual
std
::
string
cwd
();
virtual
std
::
string
argv
();
// global section
public:
virtual
SrsConfDirective
*
get_root
();
...
...
trunk/src/app/srs_app_http_api.cpp
查看文件 @
a1fed15
...
...
@@ -205,12 +205,16 @@ int SrsApiSummaries::do_process_request(SrsSocket* skt, SrsHttpMessage* req)
SrsProcSystemStat
*
s
=
srs_get_system_proc_stat
();
SrsCpuInfo
*
c
=
srs_get_cpuinfo
();
SrsMemInfo
*
m
=
srs_get_meminfo
();
SrsPlatformInfo
*
p
=
srs_get_platform_info
();
float
self_mem_percent
=
0
;
if
(
m
->
MemTotal
>
0
)
{
self_mem_percent
=
(
float
)(
r
->
r
.
ru_maxrss
/
(
double
)
m
->
MemTotal
);
}
int64_t
now
=
srs_get_system_time_ms
();
double
srs_uptime
=
(
now
-
p
->
srs_startup_time
)
/
100
/
10.0
;
ss
<<
JOBJECT_START
<<
JFIELD_ERROR
(
ERROR_SUCCESS
)
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"data"
,
JOBJECT_START
)
...
...
@@ -219,14 +223,17 @@ int SrsApiSummaries::do_process_request(SrsSocket* skt, SrsHttpMessage* req)
<<
JFIELD_ORG
(
"system_cpu_stat_ok"
,
(
s
->
ok
?
"true"
:
"false"
))
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"cpuinfo_ok"
,
(
c
->
ok
?
"true"
:
"false"
))
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"meminfo_ok"
,
(
m
->
ok
?
"true"
:
"false"
))
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"platform_ok"
,
(
p
->
ok
?
"true"
:
"false"
))
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"now"
,
now
)
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"self"
,
JOBJECT_START
)
<<
JFIELD_ORG
(
"pid"
,
getpid
())
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"ppid"
,
u
->
ppid
)
<<
JFIELD_CONT
<<
JFIELD_STR
(
"argv"
,
_srs_config
->
get_argv
())
<<
JFIELD_CONT
<<
JFIELD_STR
(
"cwd"
,
_srs_config
->
get_cwd
())
<<
JFIELD_CONT
<<
JFIELD_STR
(
"argv"
,
_srs_config
->
argv
())
<<
JFIELD_CONT
<<
JFIELD_STR
(
"cwd"
,
_srs_config
->
cwd
())
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"mem_kbyte"
,
r
->
r
.
ru_maxrss
)
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"mem_percent"
,
self_mem_percent
)
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"cpu_percent"
,
u
->
percent
)
<<
JFIELD_ORG
(
"cpu_percent"
,
u
->
percent
)
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"srs_uptime"
,
srs_uptime
)
<<
JOBJECT_END
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"system"
,
JOBJECT_START
)
<<
JFIELD_ORG
(
"cpu_percent"
,
s
->
percent
)
<<
JFIELD_CONT
...
...
@@ -234,8 +241,13 @@ int SrsApiSummaries::do_process_request(SrsSocket* skt, SrsHttpMessage* req)
<<
JFIELD_ORG
(
"mem_ram_percent"
,
m
->
percent_ram
)
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"mem_swap_kbyte"
,
m
->
SwapTotal
)
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"mem_swap_percent"
,
m
->
percent_swap
)
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"nb_processors"
,
c
->
nb_processors
)
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"nb_processors_online"
,
c
->
nb_processors_online
)
<<
JFIELD_ORG
(
"cpus"
,
c
->
nb_processors
)
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"cpus_online"
,
c
->
nb_processors_online
)
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"uptime"
,
p
->
os_uptime
)
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"ilde_time"
,
p
->
os_ilde_time
)
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"load_1m"
,
p
->
load_one_minutes
)
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"load_5m"
,
p
->
load_five_minutes
)
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"load_15m"
,
p
->
load_fifteen_minutes
)
<<
JOBJECT_END
<<
JOBJECT_END
<<
JOBJECT_END
;
...
...
trunk/src/app/srs_app_http_hooks.cpp
查看文件 @
a1fed15
...
...
@@ -479,7 +479,7 @@ void SrsHttpHooks::on_dvr_hss_reap_flv_header(std::string url, SrsRequest* req,
<<
JFIELD_STR
(
"app"
,
req
->
app
)
<<
JFIELD_CONT
<<
JFIELD_STR
(
"stream"
,
req
->
stream
)
<<
JFIELD_CONT
<<
JFIELD_NAME
(
"segment"
)
<<
JOBJECT_START
<<
JFIELD_STR
(
"cwd"
,
_srs_config
->
get_
cwd
())
<<
JFIELD_CONT
<<
JFIELD_STR
(
"cwd"
,
_srs_config
->
cwd
())
<<
JFIELD_CONT
<<
JFIELD_STR
(
"path"
,
header_file
)
<<
JOBJECT_END
<<
JOBJECT_END
;
...
...
@@ -532,7 +532,7 @@ void SrsHttpHooks::on_dvr_hss_reap_flv(string url, SrsRequest* req, SrsFlvSegmen
<<
JFIELD_STR
(
"app"
,
req
->
app
)
<<
JFIELD_CONT
<<
JFIELD_STR
(
"stream"
,
req
->
stream
)
<<
JFIELD_CONT
<<
JFIELD_NAME
(
"segment"
)
<<
JOBJECT_START
<<
JFIELD_STR
(
"cwd"
,
_srs_config
->
get_
cwd
())
<<
JFIELD_CONT
<<
JFIELD_STR
(
"cwd"
,
_srs_config
->
cwd
())
<<
JFIELD_CONT
<<
JFIELD_STR
(
"path"
,
segment
->
path
)
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"duration"
,
segment
->
duration
)
<<
JFIELD_CONT
<<
JFIELD_ORG
(
"offset"
,
segment
->
sequence_header_offset
)
<<
JFIELD_CONT
...
...
trunk/src/app/srs_app_server.cpp
查看文件 @
a1fed15
...
...
@@ -71,6 +71,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// SRS_SYS_CYCLE_INTERVAL * SRS_SYS_MEMINFO_RESOLUTION_TIMES
#define SRS_SYS_MEMINFO_RESOLUTION_TIMES 60
// update platform info interval:
// SRS_SYS_CYCLE_INTERVAL * SRS_SYS_PLATFORM_INFO_RESOLUTION_TIMES
#define SRS_SYS_PLATFORM_INFO_RESOLUTION_TIMES 80
SrsListener
::
SrsListener
(
SrsServer
*
server
,
SrsListenerType
type
)
{
fd
=
-
1
;
...
...
@@ -623,6 +627,7 @@ int SrsServer::do_cycle()
max
=
srs_max
(
max
,
SRS_SYS_RUSAGE_RESOLUTION_TIMES
);
max
=
srs_max
(
max
,
SRS_SYS_CPU_STAT_RESOLUTION_TIMES
);
max
=
srs_max
(
max
,
SRS_SYS_MEMINFO_RESOLUTION_TIMES
);
max
=
srs_max
(
max
,
SRS_SYS_PLATFORM_INFO_RESOLUTION_TIMES
);
// the deamon thread, update the time cache
while
(
true
)
{
...
...
@@ -665,6 +670,9 @@ int SrsServer::do_cycle()
if
((
i
%
SRS_SYS_MEMINFO_RESOLUTION_TIMES
)
==
0
)
{
srs_update_meminfo
();
}
if
((
i
%
SRS_SYS_PLATFORM_INFO_RESOLUTION_TIMES
)
==
0
)
{
srs_update_platform_info
();
}
}
}
...
...
trunk/src/kernel/srs_kernel_utility.cpp
查看文件 @
a1fed15
...
...
@@ -224,13 +224,13 @@ bool get_proc_self_stat(SrsProcSelfStat& r)
&
r
.
wchan
,
&
r
.
nswap
,
&
r
.
cnswap
,
&
r
.
exit_signal
,
&
r
.
processor
,
&
r
.
rt_priority
,
&
r
.
policy
,
&
r
.
delayacct_blkio_ticks
,
&
r
.
guest_time
,
&
r
.
cguest_time
);
fclose
(
f
);
if
(
ret
>=
0
)
{
r
.
ok
=
true
;
}
fclose
(
f
);
return
r
.
ok
;
}
...
...
@@ -349,6 +349,8 @@ void srs_update_meminfo()
}
}
fclose
(
f
);
r
.
sample_time
=
srs_get_system_time_ms
();
r
.
MemActive
=
r
.
MemTotal
-
r
.
MemFree
;
r
.
RealInUse
=
r
.
MemActive
-
r
.
Buffers
-
r
.
Cached
;
...
...
@@ -361,8 +363,6 @@ void srs_update_meminfo()
if
(
r
.
SwapTotal
>
0
)
{
r
.
percent_swap
=
(
float
)((
r
.
SwapTotal
-
r
.
SwapFree
)
/
(
double
)
r
.
SwapTotal
);
}
fclose
(
f
);
}
SrsCpuInfo
::
SrsCpuInfo
()
...
...
@@ -388,3 +388,63 @@ SrsCpuInfo* srs_get_cpuinfo()
return
cpu
;
}
SrsPlatformInfo
::
SrsPlatformInfo
()
{
ok
=
false
;
srs_startup_time
=
srs_get_system_time_ms
();
os_uptime
=
0
;
os_ilde_time
=
0
;
load_one_minutes
=
0
;
load_five_minutes
=
0
;
load_fifteen_minutes
=
0
;
}
static
SrsPlatformInfo
_srs_system_platform_info
;
SrsPlatformInfo
*
srs_get_platform_info
()
{
return
&
_srs_system_platform_info
;
}
void
srs_update_platform_info
()
{
SrsPlatformInfo
&
r
=
_srs_system_platform_info
;
r
.
ok
=
true
;
if
(
true
)
{
FILE
*
f
=
fopen
(
"/proc/uptime"
,
"r"
);
if
(
f
==
NULL
)
{
srs_warn
(
"open uptime failed, ignore"
);
return
;
}
int
ret
=
fscanf
(
f
,
"%lf %lf
\n
"
,
&
r
.
os_uptime
,
&
r
.
os_ilde_time
);
fclose
(
f
);
if
(
ret
<
0
)
{
r
.
ok
=
false
;
}
}
if
(
true
)
{
FILE
*
f
=
fopen
(
"/proc/loadavg"
,
"r"
);
if
(
f
==
NULL
)
{
srs_warn
(
"open loadavg failed, ignore"
);
return
;
}
int
ret
=
fscanf
(
f
,
"%lf %lf %lf
\n
"
,
&
r
.
load_one_minutes
,
&
r
.
load_five_minutes
,
&
r
.
load_fifteen_minutes
);
fclose
(
f
);
if
(
ret
<
0
)
{
r
.
ok
=
false
;
}
}
}
...
...
trunk/src/kernel/srs_kernel_utility.hpp
查看文件 @
a1fed15
...
...
@@ -313,4 +313,30 @@ struct SrsCpuInfo
// get system cpu info, use cache to avoid performance problem.
extern
SrsCpuInfo
*
srs_get_cpuinfo
();
// platform(os, srs) summary
struct
SrsPlatformInfo
{
// whether the data is ok.
bool
ok
;
// srs startup time, in ms.
int64_t
srs_startup_time
;
// @see: cat /proc/uptime
double
os_uptime
;
double
os_ilde_time
;
// @see: cat /proc/loadavg
double
load_one_minutes
;
double
load_five_minutes
;
double
load_fifteen_minutes
;
SrsPlatformInfo
();
};
// get platform info, use cache to avoid performance problem.
extern
SrsPlatformInfo
*
srs_get_platform_info
();
// the deamon st-thread will update it.
extern
void
srs_update_platform_info
();
#endif
...
...
请
注册
或
登录
后发表评论