The most common way to hold max roach/ling is to use sentry/stalker/immortal, taking a third base off 1 robo and 6 gates... have a couple cannons at choke points - use obs to see where he's splitting his army.
If you get overrun, there's a few things that could've gone wrong
1. your build is inefficient and you have too little units (this includes bad macro)
2. your force fields are ineffective and you lose too many units OR you run out of forcefields
3. you didn't split your army properly and you took too much damage in one area
You said you have a great sentry count(8) and 3 immortals, this should be plenty to hold - likely you didn't use your forcefields as effectively as you could've.
Even the smallest donations help keep sc2sea running! All donations go towards helping our site run including our monthly server hosting fees and sc2sea sponsored community tournaments we host. Find out more here.