Skip to content

Instantly share code, notes, and snippets.

View mondain's full-sized avatar
🏠
Working from home

Paul Gregoire mondain

🏠
Working from home
View GitHub Profile
@mondain
mondain / jee-container-hl.md
Last active March 20, 2020 18:44
Red5 configuration for higher HTTP/WS loads

The following modifications to the conf/jee-container.xml should provide a higher availability level than the default configuration set.

For http and ws connections:

<bean name="httpConnector" class="org.red5.server.tomcat.TomcatConnector">
    <property name="protocol" value="org.apache.coyote.http11.Http11Nio2Protocol" />
    <property name="address" value="${http.host}:${http.port}" />
    <property name="redirectPort" value="${https.port}" />
    <property name="connectionProperties">
@mondain
mondain / j2c_string.c
Created January 14, 2020 15:11
JNI example of a java string into a c string
/* Java String to C String */
static int jstr_to_cstr(JNIEnv *env, jstring jstr, char *cstr) {
jsize jlen, clen;
clen = env->GetStringUTFLength(jstr);
jlen = env->GetStringLength(jstr);
env->GetStringUTFRegion(jstr, 0, jlen, cstr);
if (env->ExceptionCheck()) {
return -EIO;
}
@mondain
mondain / GC.md
Created August 27, 2019 13:53
Java GC with Red5

I did some reading and it looks like this particular OOM message simply means to add more memory for the heap; it essentially means one is running too lean. CPU runs hot trying to clear the garbage.

OutOfMemoryError: GC overhead limit exceeded

Excessive GC Time and OutOfMemoryError
The parallel collector will throw an OutOfMemoryError if too much time is being spent in garbage collection: if more than 98% of the total time is spent in garbage collection and less than 2% of the heap is recovered, an OutOfMemoryError will be thrown. This feature is designed to prevent applications from running for an extended period of time while making little or no progress because the heap is too small. If necessary, this feature can be disabled by adding the option -XX:-UseGCOverheadLimit to the command line.

When we run our Java based server on Linux on certain bare-metal servers we're seeing what may be some sort of file handle leak. To give more detail to this question, what would cause additional handles to be consumed outside of file access and socket creation? To get a total count we use lsof -i -n -p JAVA_APP_PID | wc -l to see the entire listing, we use lsof -i -n -p JAVA_APP_PID. On the listing there are entries like these that we don't recognize:

java     30464 mondain    0u      CHR             136,18      0t0       21 /dev/pts/18
java     30464 mondain    1u      CHR             136,18      0t0       21 /dev/pts/18
java     30464 mondain    2u      CHR             136,18      0t0       21 /dev/pts/18
java     30464 mondain  196u     unix 0x0000000000000000      0t0  5488165 type=STREAM
java     30464 mondain  200r     FIFO               0,10      0t0  5491231 pipe
@mondain
mondain / keybase.md
Created February 11, 2018 02:06
keybase.md

Keybase proof

I hereby claim:

  • I am mondain on github.
  • I am mondain (https://keybase.io/mondain) on keybase.
  • I have a public key ASAiorfzeX4Knscdu0yapQ0IXSAoqN6FxhPXBQa-b1XaEgo

To claim this, I am signing this object:

@mondain
mondain / ens.sol
Created January 16, 2018 17:33
ENS contract for deed info
pragma solidity ^0.4.0;
/*
Temporary Hash Registrar
========================
This is a simplified version of a hash registrar. It is purporsefully limited:
names cannot be six letters or shorter, new auctions will stop after 4 years.
@mondain
mondain / index.js
Created December 23, 2017 01:05
requirebin sketch
// Welcome! require() some modules from npm (like you were using browserify)
// and then hit Run Code to run your code on the right side.
// Modules get downloaded from browserify-cdn and bundled in your browser.
var Buffer = require('buffer').Buffer;
var forge = require('node-forge');
const key = {
'i': 'w',
'l': 'x',
#!/bin/bash
for f in `find . -name '*.flv'`;
do ffmpeg -y -re -i ${f} -vcodec copy -acodec copy -f segment -segment_list ${f}.m3u8 ${f}%03d.ts;
done
@mondain
mondain / loadtest.sh
Created August 29, 2017 19:02
Chromium load test script
#!/bin/bash
# maximum chromium instances to spawn
MAX_INSTANCES=50
# the testing url to request, default page will use "stream1"
#TEST_URL='http://localhost:5080/webrtcexamples/test/subscribe/''
#TEST_URL='http://webrtc.red5.org:5080/webrtcexamples/test/subscribe/'
#TEST_URL='https://webrtc.red5.org/live/viewer.jsp?host=webrtc.red5.org&stream=myStream'
TEST_URL='http://webrtc.red5.org:5080/live/viewer.jsp?host=webrtc.red5.org&stream=myStream'
@mondain
mondain / gist:444db0d82eba6a2a436e8928a582054a
Created July 8, 2017 03:03
WebRTC Chrome 59 SDP offer
v=0
o=- 2993238603765319990 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio video
a=msid-semantic: WMS AyZiiVhnAinEte7RxyRbOTqd0g1KbCMxmzEE
m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:uptc