Just like almost every answer in poker, it depends. Some days you are more focused than others due to various reasons (better sleep, working out, good diet, sex? lol). You can work on increasing session lengths slowly until your mind/body gets used to the new length, then rinse and repeat until you get to the point where you want your session length to be.

Certain things should triumph over session length. If you feel that you are not playing your best or are going on tilt due to a bad run or just not playing well, you are better off cutting your session shorter and not playing than continuing to play under those circumstances. And finally to answer your last question, my sessions are usually 2-3 hours with minimum 1-2 hrs break in between. Those breaks I like to include some physical activity (it could be something as simple as walking around) rather than sitting around watching tv and eating. But that doesn't mean those are the only sessions lengths I do. Sometimes I'll end up doing up to 4 hrs and sometimes my session lasts 30min-1hr depending on various reasons.