According to what you described, the current form is something like:
Current Code after rendering - revised from what you posted
<form action=update1.php>
<table>
<tr><td>domain1.com
<tr><td>Field1
<td><textarea name=Comment[system1_domain1.com_1]></textarea>
<tr><td>Field2
<td><textarea name=Comment[system1_domain1.com_2]></textarea>
<tr><td>Field3
<td><textarea name=Comment[system1_domain1.com_3]></textarea>
</table>
<table>
<tr><td>domain2.com
<tr><td>Field1
<td><textarea name=Comment[system1_domain2.com_4]></textarea>
<tr><td>Field2
<td><textarea name=Comment[system1_domain2.com_5]></textarea>
<tr><td>Field3
<td><textarea name=Comment[system1_domain2.com_6]></textarea>
<tr><td><input type=submit>
</table>
</form>
But the above only contains 2 sets of "domain" data, what you have is "thousands of data elements" which may be limited by httpd's max_input_vars (The default value for the max_input_vars directive in PHP is 1000)
To tackle the problem, as other volunteers have stated, you may use either Ajax or JS. In this case I would recommend using JS to tackle the prblem (to keep it simple).
Let's use a simple JS onblur() function. It has the advantage that whenever you change something (say after finish data input in a textarea and go to the next one, or after you finish the last data input and click the submit button, this function will be triggered)
So let's amend the above code to:
<table>
<tr><td>domain1.com
<tr><td>Field1
<td><textarea onblur='javascript:update1(this, "system1","domain1.com",1)'></textarea>
<tr><td>Field2
<td><textarea onblur='javascript:update1(this, "system1","domain1.com",2)'></textarea>
<tr><td>Field3
<td><textarea onblur='javascript:update1(this, "system1","domain1.com",3)'></textarea>
</table>
<table>
<tr><td>domain2.com
<tr><td>Field1
<td><textarea onblur='javascript:update1(this, "system1","domain2.com",4)'></textarea>
<tr><td>Field2
<td><textarea onblur='javascript:update1(this, "system1","domain2.com",5)'></textarea>
<tr><td>Field3
<td><textarea onblur='javascript:update1(this, "system1","domain2.com",6)'></textarea>
</table>
<form action=target1.php method=POST>
<textarea id=final name=final></textarea>
<input type=submit>
</form>
<script>
function update1(var1, var2, var3, var4) {
document.getElementById('final').value +=var1.value +"|"+var2+"|"+var3+"|"+var4+"#";
}
</script>
The above code use "|" as delimitors of the data items per set, and use "#" as delimitor to separate adjacent data item sets. (but of course you may choose other delimitors, choose the ones which will not be used in the data input in your case)
After data input you will have something like this:

Of course you may wish to make the textarea with id=final to be "hidden" (type=hidden), since there is no point to allow the user to "accidentally" amend the data inside.
On submission of the form (which only contains one textbox), you need to use a PHP script to parse the data into separate SQL update statments and execute them. (I think that is very simple so I am not going to put this part)
Since there is only one textbox submitted, it will not be limited by max_input_vars
<form> ..... </form>, so only one row will be submitted when you press the submit button in that row?formattribute, you can associate input fields/textareas/buttons with the form, without them needing to be descendants of the form.