Factors that influence length of seige:
A: Water Supply. If there are springs or wells internally, then water is not the limiting factor. If water is stored, then when the water is gone, soon the city falls. The degree of water also is important: Water for firefighting?
B: Food supply. If you are willing to eat boring food, you can easily store years worth. Wheat runs 60 lbs/bushel -- roughly the same density as water. So a 55 gallon drum is close to 500 lbs. The romans marched back and forth on 2 lbs grain per man per day. In a seige situation non-physical workers could subsit on 1.25. Without fresh food you would have various deficiency diseases. Some grains may develope Vit C on sprouting. Would need to check that.
C: Hygiene. MANY seiges have broken one way or another when one side got sick. Cholera and typhoid are the ones that spring to mind. I think I read somewhere that a fighting man in medieval time was several times more likely to die from disease as from battle.
D: Organization: Every usable container is filled with water and positioned to put out fires. Rationing. Hygiene rules. Conserving everything that might be useful. Weapons from anthing: Catapults taht shoot roof tiles. Doors backed by a space with notches in the walls, timbers nearby. If it looks like the gate is under assault, put timbers in the notches and fill the space between timber and gate with rubble.