can someone help me in understanding why multiple selenium/standalone-chrome-debug
containers on the same host (EC2) are not working except 1.
I am starting my containers as
docker run -d -p 4444:4444 -p 5900:5900 --shm-size 2g --net host --dns 127.0.0.1 --name image1 load-test:latest
docker run -d -p 4445:4444 -p 5901:5900 --shm-size 2g --net host --dns 127.0.0.1 --name image2 load-test:latest
docker run -d -p 4446:4444 -p 5902:5900 --shm-size 2g --net host --dns 127.0.0.1 --name image3 load-test:latest
and then
docker exec image1 java -jar -Dip=1.1.1.1 -DimageName=image1 -Ddebug=False perf-test.jar
docker exec image2 java -jar -Dip=1.1.1.1 -DimageName=image2 -Ddebug=False perf-test.jar
docker exec image3 java -jar -Dip=1.1.1.1 -DimageName=image3 -Ddebug=False perf-test.jar
but only the first image comes up and starts the test. Other images are showing a blank chrome screen and giving this error
screenshot failed, retrying timeout: Timed out receiving message from renderer: 10.000
[1577846494.939][SEVERE]: Timed out receiving message from renderer: 10.000
[1577846494.939][WARNING]: screenshot failed, retrying timeout: Timed out receiving message from renderer: 10.000
[1577846504.939][SEVERE]: Timed out receiving message from renderer: 10.000
[1577846514.944][SEVERE]: Timed out receiving message from renderer: 10.000
[1577846514.944][WARNING]: screenshot failed, retrying timeout: Timed out receiving message from renderer: 10.000
[1577846524.944][SEVERE]: Timed out receiving message from renderer: 10.000
Our code is very simple nothing fancy
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(timeout, TimeUnit.SECONDS);
//driver.manage().window().maximize();
return driver;
But we are also doing this as soon as the user logs-in
private void takeSnapshot( String filename) {
try {
TakesScreenshot screenshot = (TakesScreenshot) threadWebDriver.get();
File source = screenshot.getScreenshotAs(OutputType.FILE);
File target = new File(filename);
FileUtils.copyFile(source, target);
}
catch( Exception e ) {
logger.warn("takeSnapshot caught exception: {}", e.getMessage());
}
}